Имя: Пароль:
1C
1С v8
ТЗ.Свернуть() не сворачивает строки
🠗 (Волшебник 03.12.2024 15:06)
, ,
0 who respawn
 
03.12.24
14:24
Привет, не могу свернуть строки ТЗ с одинаковыми "НомерЗаказа", что не так?
ДанныеФайла = Новый ТаблицаЗначений;
    ДанныеФайла.Колонки.Добавить("НомерЗаказа", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20)));
    ДанныеФайла.Колонки.Добавить("СуммаДоставки", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15,2)));
    ДанныеФайла.Свернуть("НомерЗаказа", "СуммаДоставки");
1 2S
 
03.12.24
14:27
Пробелы? Как пишете в "НомерЗаказа", небось без СокрЛП?
2 Волшебник
 
03.12.24
14:31
(0) У Вас таблица значений пустая
3 who respawn
 
03.12.24
14:33
(1) то же самое

        СтрокаДанных.НомерЗаказа          = СокрЛП(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст);
        СтрокаДанных.СуммаДоставки        = СокрЛП(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);
4 2S
 
03.12.24
14:32
СтрокаДанных.СуммаДоставки        = СокрЛП, серьезно?
5 who respawn
 
03.12.24
14:35
(4) ну, убрал с суммы,  ничего не поменялось
6 Волшебник
 
03.12.24
14:36
(5) добавьте Число()
7 who respawn
 
03.12.24
14:37
(6) (1) а что это должно поменять, если я в отладке вижу что типы и так число и строка?
8 2S
 
03.12.24
14:40
(7) Отладчиком посмотрите данные ТЗ.
9 Мультук
 
гуру
03.12.24
14:41
(0)

1) А так сворачивает ?

 СтрокаДанных.НомерЗаказа          = СокрЛП(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст); 
 СтрокаДанных.СуммаДоставки        = 1; 

2) А так ?

СтрокаДанных.НомерЗаказа          = "123";
 СтрокаДанных.СуммаДоставки        = СокрЛП(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);


P.S.
И да, я понимаю, вам нужно не искать проблему, а чтобы работало.
Но хрустальный шар сегодня какой-то мутный.
10 who respawn
 
03.12.24
14:45
Мне кажется я просто что-то неправильно делаю

КоличествоСтрок = ТабДок.ВысотаТаблицы;
    
    
    ДанныеФайла = Новый ТаблицаЗначений;
    ДанныеФайла.Колонки.Добавить("НомерЗаказа", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(20)));
    ДанныеФайла.Колонки.Добавить("СуммаДоставки", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15,2)));
    ДанныеФайла.Свернуть("НомерЗаказа", "СуммаДоставки");


Для НомерСтроки = 2 По КоличествоСтрок Цикл
    
        СтрокаДанных = ДанныеФайла.Добавить();
        
        СтрокаДанных.НомерЗаказа          = СокрЛП(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 1).ТекущаяОбласть.Текст);
        СтрокаДанных.СуммаДоставки        = Число(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);
        
              

        
        Документ = Документы.ЗаказПокупателя.НайтиПоНомеру(СтрокаДанных.НомерЗаказа,  Дата(НачалоГода(ТекущаяДата())));
        
        Если Документ.Пустая() Тогда
            Сообщить("Не найден документ " + СтрокаДанных.НомерЗаказа);
        Иначе
            ДокОбъект = Документ.ПолучитьОбъект();
            
            Если Документ.ПометкаУдаления Тогда
                Сообщить(Документ.Номер + "" + " помечен на удаление");
                Продолжить;
            КонецЕсли;
            Если ДокОбъект.СтоимостьДоставкиЗаНашСчет <> СтрокаДанных.СуммаДоставки Тогда
                ДокОбъект.СтоимостьДоставкиЗаНашСчет = СтрокаДанных.СуммаДоставки;
            Иначе
                Сообщить("Доставка за наш счет уже " + СтрокаДанных.СуммаДоставки);
                Продолжить;            
            КонецЕсли;
            
            Запрос1 = New Запрос;
            Запрос1.Текст = "
            |SELECT TOP 1 Ссылка
            |FROM КритерийОтбора.ДокументыПоЗаказуПокупателя(&ТекущийДокумент)
            |WHERE (Ссылка REFS Документ.ВозвратТоваровОтПокупателя
            |            Or Ссылка REFS Документ.ПоступлениеПокупка
            |            Or Ссылка REFS Документ.ТранспортныйЖурнал)
            |    And Ссылка.Проведен
            |ORDER BY Ссылка.МоментВремени
            |AUTOORDER
            |";
            
            Запрос1.УстановитьПараметр("ТекущийДокумент", ДокОбъект.Ссылка);
            
            Выборка = Запрос1.Выполнить().Выбрать();
            
            Если Выборка.Следующий() Тогда
                МоментВремениСвязанногоДокумента = Выборка.Ссылка.МоментВремени();
            КонецЕсли;
            
            
            Если ДокОбъект.МоментВремени().Сравнить(МоментВремениСвязанногоДокумента) = 1 Тогда
                ДокОбъект.Дата = МоментВремениСвязанногоДокумента.Дата-1;
            КонецЕсли;
                

            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
            Сообщить("Проведен документ " + ДокОбъект.Номер + " " + " Доставка за наш счет " + ДокОбъект.СтоимостьДоставкиЗаНашСчет);
              

        КонецЕсли;
    КонецЦикла;
11 Stepashkin
 
03.12.24
14:45
(9) Магический шар)
12 KJlag
 
03.12.24
14:49
(10) По поводу сворачивания: а почему сначала сворачиваете пустую таблицу, а потом заполняете?
13 Builder
 
03.12.24
14:49
(10) Вы кем там работаете?
14 who respawn
 
03.12.24
14:50
(13) уборщицей, а что?
15 Мультук
 
гуру
03.12.24
14:51
(10)

Вам нужно сесть в отладку.
Ибо думать головой у вас не получается.

По теме:
Вы сворачиваете пустую таблицу.
А затем на каждую строку зачем-то насилуете "Заказ покупателя".
16 Rico_1C
 
03.12.24
14:52
(13) уборщице нужно почистить ТЗ, в чем вопрос?
17 who respawn
 
03.12.24
14:53
(15) ну да, я не особо понимаю как мне сворачивать заполненную таблицу, если она заполняется полностью при последней итерации, т.е. документ уже будет записан 1ой строкой, а 2ая строка по этому доку затрёт 1ую
18 Мультук
 
гуру
03.12.24
14:55
(17)

Два цикла.

Первый цикл заполняем тз
Соврачиваем

Второй цикл по строкам тз
делаем всякое с "заказ клиента"
19 Волшебник
 
03.12.24
14:56
(12) душнила
20 СвинТуз
 
03.12.24
14:58
(10)
ха ха
забавная хрень.
Кому то это в реальной жизни нужно?
21 СвинТуз
 
03.12.24
14:59
(10)
Крутой перец пишущий запросы на английском запутался в трех соснах.
Смешно.
22 Волшебник
 
03.12.24
15:01
(10) >> Мне кажется я просто что-то неправильно делаю

Вы сворачиваете пустую таблицу, о чём я сказал в (2)

23 who respawn
 
03.12.24
15:00
(20) ха ха) нет, я прикалываюсь)
24 Волшебник
 
03.12.24
15:00
(23) тупой бот
25 who respawn
 
03.12.24
15:00
(21) не мой запрос, прекращай, перец
(22) спасибо, понял
26 Fedor-1971
 
03.12.24
15:01
(10) Тебе ещё в (2) сказали - ты сворачиваешь пустую таблицу значений
Перенеси Свернуть после цикла заполнения
27 who respawn
 
03.12.24
15:02
(26) да дошло уже, просто у меня в цикле заполнения идёт проведение документа, не понял сначала, что нужно 2умя циклами делать, спасибо
28 СвинТуз
 
03.12.24
15:03
(23)
нейросеть что ли?
Довольно сложный код лишенный логики.
29 who respawn
 
03.12.24
15:03
(28) если ты чего то добиваешься, то скажи сразу, я отреагирую как бы тебе хотелось и ты пойдешь дальше, мне не трудно
30 СвинТуз
 
03.12.24
15:04
(23)
с++ что ли родной?
на нем не платят?
31 Волшебник
 
03.12.24
15:04
(29) Зачем Вы громоздите программный код, который не понимаете?
32 who respawn
 
03.12.24
15:05
(31) учусь, практикуюсь, туплю, исправляюсь
33 СвинТуз
 
03.12.24
15:07
(29)
это очень странно когда человек получает ссылку,
потом от нее объект
потом запросом момент времени
все это в цикле

Сам код довольно сложный. Используются довольно редкие объекты, что говорит о знаниях.
При этом человек думает, как начинающий.
34 СвинТуз
 
03.12.24
15:07
(32)
Выглядите троллем ...
35 Волшебник
 
03.12.24
15:08
(33) Явный дисбаланс знаний. Я не удивлюсь, если он не отличает число от цифры.
36 who respawn
 
03.12.24
15:09
(34) ну а как мне отвечать ещё на подобные сообщения?) я задал вопрос, мне ответили, я потупил и разобрался, что дальше в ветке делать ?)
37 Волшебник
 
03.12.24
15:11
(36) Тупить и разбираться надо ПЕРЕД созданием ветки.
38 СвинТуз
 
03.12.24
15:12
Это вообще песня, после условий в выборке.

Если ДокОбъект.МоментВремени().Сравнить(МоментВремениСвязанногоДокумента) = 1 Тогда
                ДокОбъект.Дата = МоментВремениСвязанногоДокумента.Дата-1;
            КонецЕсли;

Наверное я стар стал и теряю разум )))

Понравилось
39 who respawn
 
03.12.24
15:12
(38) ну это имеет смысл, обработка проведения вылетит с ошибкой если не это условие
40 who respawn
 
03.12.24
15:12
(37) согласен, но когда пнули стало проще
41 СвинТуз
 
03.12.24
15:12
Выбирать из критерия отбора документы и сравнивать МоментВремени с фильтрующим документом.

Приходите еще.
42 who respawn
 
03.12.24
15:13
(41) приду.
43 Волшебник
 
03.12.24
15:13
(40) Вы пожрали чужое время. За это Вы поражены в правах.
44 who respawn
 
03.12.24
15:14
(43) а как я буду смаилики отправлять
45 СвинТуз
 
03.12.24
15:14
бредятина полная.
46 who respawn
 
03.12.24
15:15
спасибо всем, особенно (2) (9)
47 СвинТуз
 
03.12.24
15:16
(0)
Тут люди не вчера родились.
48 who respawn
 
03.12.24
15:16
(47)
А кто тут вчера родился?
49 Волшебник
 
03.12.24
15:18
(44) Засуньте Ваши смайлики...
50 Дмитрий
 
03.12.24
16:02
Старый форум. Ровесники детей уже сюда пишут
51 Волшебник
 
03.12.24
18:12
(50) У форума молодой движок
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.