Имя: Пароль:
1C
1С v8
Обновление УПП, странное сообщение 162->163
0 NorthWind
 
05.08.21
10:37
Добрый день.

Вчера в очередной раз накатил кучку релизов УПП, поднял со 162.4 до 164.1.
При обновлении на 163 обратил внимание на кучу изменений, включая реструктуризацию таблиц документов (таких как РТиУ, требование-накладная), судя по всему, в связи с прослеживаемостью. Ну да вопрос не в этом. При первом запуске обновленной до 163.1 УПП было сообщение:

--
При заполнении календаря на 2022 год обнаружены государственные праздники, попадающие на выходные дни:
   08 января - Новогодние каникулы
Необходимо перенести эти выходные дни на рабочие дни.
--

Это у всех? Делал ли кто-либо что-либо в связи с этим?
1 Масянька
 
05.08.21
10:40
(0) У меня в типовой (без изменений, без ведения учета) было. Ничего не делала.
У нас эта база для обновлений используется: смотрим, пробуем, переносим в свою.
2 Serg_1960
 
05.08.21
11:53
Обработка обновления по перезаполнению производственного календаря развлекается :) Если, теперь, зайти в производственный календарь и выставить 2022 год, то получите предупреждение:

При заполнении календаря на 2022 год обнаружены государственные праздники, попадающие на выходные дни:
   01 января - Новогодние каникулы
   02 января - Новогодние каникулы
   08 января - Новогодние каникулы
Необходимо перенести эти выходные дни на рабочие дни.

PS: сказано "Необходимо перенести" - переносите.
3 Масянька
 
05.08.21
12:02
(2) Уже пора?
4 NorthWind
 
05.08.21
12:03
(2) я не очень понимаю смысл всей манипуляции. Это мне надо в какие-то три рабочие дня поставить три выходных? В какие? Бред какой-то
5 NorthWind
 
05.08.21
12:04
Открыл календарь в яндексе, там написано - 31 декабря — 9 января    10    Новогодние каникулы 2022. Про перенос выходных я ничего не вижу. К чему это сообщение?
6 Serg_1960
 
05.08.21
12:05
(3) Информации ради, типовой алгоритм:

Функция ЗаполнениеКалендаряСПереносами(КонтрольнаяДата, ТаблицаПеренесенныхДней, Сообщать = Истина) Экспорт
...
    // Не все попавшие на выходные праздники подлежат переносу: в период с 1 по 8 января переносится только два праздника, а на выходные в некоторые годы может попасть 3 дня.
    // В этом случае корректируем список недоделок:
    // - в 2017 году 8 января переносить не надо
    НайденныйЭлемент = СписокПраздниковВВыходные.НайтиПоЗначению('20170108');
    Если НайденныйЭлемент <> Неопределено Тогда
        СписокПраздниковВВыходные.Удалить(НайденныйЭлемент);
    КонецЕсли;
    // - в 2022 году 8 января переносить не надо
    
    Если Сообщать И СписокПраздниковВВыходные.Количество() > 0 Тогда
        Сообщить("При заполнении календаря на " + Формат(Год(КонтрольнаяДата),"ЧЦ=4; ЧГ=0") + " год обнаружены государственные праздники, попадающие на выходные дни:");
        Для Сч = 1 По СписокПраздниковВВыходные.Количество() Цикл
            Сообщить("   " + Формат(СписокПраздниковВВыходные[Сч - 1].Значение, "ДФ ='дд ММММ'") + " - " + СписокПраздниковВВыходные[Сч - 1])
        КонецЦикла;
        Сообщить("Необходимо перенести эти выходные дни на рабочие дни.", СтатусСообщения.Внимание)
    КонецЕсли;
7 Serg_1960
 
05.08.21
12:05
"в 2022 году 8 января переносить не надо" - :))
8 Масянька
 
05.08.21
12:13
(6) Типовая:
док-т ПТиУ, обработки кнопки "Прослеживаемость":
....
    Если СтрокаТабличнойЧасти.ИдентификаторСтроки = "0" Тогда
        СтрокаТабличнойЧасти.ИдентификаторСтроки = Строка( Новый УникальныйИдентификатор );
    КонецЕсли;
.....

Реквизит ТЧ "ИдентификаторСтроки" имеет тип "Строка, 50, Переменная".
Это капец!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
И это уже во втором документе!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Как так можно!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
😭😡😵😠😱🤯
9 Serg_1960
 
05.08.21
12:29
(8) А вот это, кстати, нормальный алгоритм. ИдентификаторСтроки куда лучше, чем ранее везде используемый "КлючСвязи".
10 Serg_1960
 
05.08.21
12:32
Ничем не хуже, чем ИдентификаторУпаковки для ЕГАИСТа.
11 Масянька
 
05.08.21
12:32
(9) Речь не об этом, а о том, что ИдентификаторСтроки = "" (в проверке на пустое значение).
12 Serg_1960
 
05.08.21
13:04
(11) Ааа... извини не понял. Как мне кажется, это попытка наделить идентификатор тремя состояниями - не требуется/требуется указать/указан. Имхо, возможно из-за алгоритмов заполнения документов из электронного документооборота.
13 Масянька
 
05.08.21
13:25
(9) А по поводу алгоритма...
Там же (типовая УПП, последний релиз):

ПриОткрытии
....
        Если ПараметрОбъектКопирования <> Неопределено Тогда
            СведенияПрослеживаемости.Очистить();
            Для Каждого СтрокаТовары Из Товары Цикл
                СтрокаТовары.ИдентификаторСтроки = "";
            КонецЦикла;
        КонецЕсли;
....

При снятии галочки (очистить таблицу:
Процедура ОтражатьВПрослеживаемостиПриИзменении(Элемент)
    
    Если Не ЭлементыФормы.ОтражатьВПрослеживаемости.Значение Тогда
        Для Каждого Строка Из Товары Цикл
            Если Строка.ПрослеживаемыйТовар Тогда
                НоваяСтрока = ТаблицаУдаленныхСтрок.Добавить();
                НоваяСтрока.ИдентификаторСтроки = Строка.ИдентификаторСтроки;
            КонецЕсли;
        КонецЦикла;
        ПодключитьОбработчикОжидания("Подключаемый_УдалитьСвязанныеЗаписи", 0.1, Истина);
    КонецЕсли;

КонецПроцедуры

Процедура Подключаемый_УдалитьСвязанныеЗаписи()
    
    УдалитьСвязанныеЗаписиНаСервере();
    
КонецПроцедуры

Процедура УдалитьСвязанныеЗаписиНаСервере()
    
    Для Каждого СтрокаКлюча Из ТаблицаУдаленныхСтрок Цикл
        СтруктураОтбора = Новый Структура("ИдентификаторСтроки", СтрокаКлюча.ИдентификаторСтроки);
        МассивСтрокСведенияПрослеживаемости = СведенияПрослеживаемости.НайтиСтроки(СтруктураОтбора);
        Для Каждого СтрокаТЧ Из МассивСтрокСведенияПрослеживаемости Цикл
            СведенияПрослеживаемости.Удалить(СтрокаТЧ);
        КонецЦикла;
    КонецЦикла;
    
    ТаблицаУдаленныхСтрок.Очистить();
    
КонецПроцедуры

Сакральный смысл...
14 Serg_1960
 
05.08.21
14:20
И что тут "сакрального"? Не секрет, что УПП поддерживается за счет внедрения алгоритмов из других конфигураций. Если убрать всё привнесённое "из вне", то останутся обычные алгоритмы поддержки программной связи строк между табличными частями документов :(
15 Масянька
 
05.08.21
14:32
(14) Очистка таб. части:
1. старая фигня (по-другому и не сказать): вопрос, ответ "Да" - 5 (пять!) строк кода.
2. новая супер-пупер программа: вопрос, ответ "Да" - 3 (три!) процедуры (далеко не пять строк кода).
А так - да, ничего сакрального... Не осталось у разрабов 1С.
16 Serg_1960
 
05.08.21
17:35
Ничего ты не понимаешь в колбасных обрезках :)) Это тенденция. Это унификация, универсализация и т.д. Загляни в ЗУП 3.1 - проникнись современным духом программирования, который требует целый контейнер общих модулей всего только для одного документа:

ВедомостьНаВыплатуЗарплаты
ВедомостьНаВыплатуЗарплатыБазовый
ВедомостьНаВыплатуЗарплатыВнутренний
ВедомостьНаВыплатуЗарплатыКлиент
ВедомостьНаВыплатуЗарплатыКлиентРасширенный
ВедомостьНаВыплатуЗарплатыКлиентСервер
ВедомостьНаВыплатуЗарплатыКлиентСерверРасширенный
ВедомостьНаВыплатуЗарплатыРасширенный
ВедомостьНаВыплатуЗарплатыФормы
ВедомостьНаВыплатуЗарплатыФормыБазовый
ВедомостьНаВыплатуЗарплатыФормыВнутренний
ВедомостьНаВыплатуЗарплатыФормыПовтИсп
ВедомостьНаВыплатуЗарплатыФормыРасширенный
...
17 Масянька
 
06.08.21
08:14
(16) Пи-пи-пи-пи-пи-пи (голос за кадром: "Далее следует непереводимая игра слов с использованием местных идиоматических выражений")
18 NorthWind
 
06.08.21
08:18
ВедомостьНаВыплатуЗарплатыФормыРасширенныйИУглубленный
ВедомостьНаВыплатуЗарплатыФормыРасширенныйИУглубленныйКлиентСервер
...
ну и далее по тексту
19 Масянька
 
06.08.21
08:18
+(17) Как сказала девушка в одном фильме: "Я не поставлю это в эфир - нас же люди слушают."
С 1с работают не люди.
20 ДенисЧ
 
06.08.21
08:21
То ли дело в клюшках было... Всё в одном глобальном модуле на 100500 строк... Всё ясно и понятно....
21 timurhv
 
06.08.21
08:22
(16) Мне только эта вещь не нравится
ВедомостьНаВыплатуЗарплатыФормы
ВедомостьНаВыплатуЗарплатыФормыБазовый

В чем отличие? Остальное логично выглядит и удобно.
22 NorthWind
 
06.08.21
15:20
(21) это, наверно, ООП по-1С-овски. Базовый это предок, а "просто" это наследник :))))
23 NorthWind
 
06.08.21
15:21
раньше вроде там было словечко "переопределяемый", но теперь, наверно, оно не в моде
24 ДенисЧ
 
06.08.21
15:27
(22) Базовый - это скорее для базовых версий
25 Масянька
 
06.08.21
15:35
(20) Я, кстати, всегда говорила, что в клюшках не хватает наличия нескольких глобальников (целевых, как минимум).
Но то, что наворотили в снеговике - это "извращение, причем, в очень извращенной форме". Причем, уже натыкались - разные процедуры/функции (название), а код идентичен. Судя по всему, правая рука забыла, что она это делала в прошлом месяце, ну, а левая - ваще не в курсе.
26 NorthWind
 
06.08.21
15:38
(24) может и так... Своеобразная угадайка. Очень способствует тому чтобы сразу понять, куда лезть за нужным кодом.
27 Масянька
 
06.08.21
15:41
(26) В УПП, общие модули:
РасчетСтраховыхВзносов (+дополнительный и пр.)
РегламентированнаяОтчетность (3 штуки)
ЗаполнениеРегламентированнойОтчетности
Как ты думаешь, в  каком рассчитывается и заполняется РСВ?
28 NorthWind
 
06.08.21
15:55
(27) да какая разница. Все равно отладкой лезть, что откроется в процессе, там и будем править. Поэтому в сущности абсолютно все равно, один глобальник или много, один черт непонятно где находится то что нужно. В лучшем случае понятно очень условно.
Программист всегда исправляет последнюю ошибку.