Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Ошибка глобального модуля "ОписаниеВычета" и "СуммаПоВычету" в релизах бух. 7.7 (ОСН - 614,615 и УСН-259,260) (http://forums.kuban.ru/f1040/oshibka_global-nogo_modulya_opisanievycheta_i_summapovychetu_v_relizah_buh_7_7_osn_-_614_615_i_usn-259_260_a-7667432.html)

perpetum 13.04.2016 17:48

Ошибка глобального модуля "ОписаниеВычета" и "СуммаПоВычету" в релизах бух. 7.7 (ОСН - 614,615 и УСН-259,260)
 
Ошибка приводит ошибке заполнения сведений по сотруднику в обработках:
КорректировкаДанныхПоНДФЛ,
РегистрНалоговогоУчетаПоНДФЛ,
СправкаПоНДФЛ,
возможно и в других, - по 2015,2016г.г.

Для исправления нужно отследить строки в глобальном модуле:

КодЭлемента = ""; // код элемента справочника ВидыВычетов
ОписаниеВычета=СписокКодовВычетовСотра.ПолучитьЗначение(СчВычетов,КодЭлемента);
ВидВычета = ОписаниеВычета.ПолучитьЗначение(7);
КодВычета = ВидВычета.КодДляОтчетности2015;
СуммаПоВычету = СуммыВычетов.Получить(КодЭлемента);

и заменить, где нужно, на соответствующие:

КодЭлемента = ""; // код элемента справочника ВидыВычетов
ОписаниеВычета=СписокКодовВычетовСотра.ПолучитьЗначение(СчВычетов,КодЭлемента);
Если ТипЗначенияСтр(ОписаниеВычета) = "СписокЗначений" Тогда
ВидВычета = ОписаниеВычета.ПолучитьЗначение(7);
Иначе
ВидВычета = ОписаниеВычета;
КонецЕсли;
КодВычета = ВидВычета.КодДляОтчетности2015;
СуммаПоВычету = Число(СуммыВычетов.Получить(КодВычета));

P.s.
Разработчик, писавший код, использовал одноименную переменную "ОписаниеВычета", то как "СписокЗначений",
то как простую переменную, в результате заблудился, в каком месте, какой вид переменной используется.
Я обошел такие места по условию - если "СписокЗначений", тогда, иначе - конец если.
Ну и некорректно использовалась переменная "КодЭлемента", вместо "КодВычета" по контексту.
- Кому нужно - обратите внимание... :-)

Чучундер 13.04.2016 22:16

"[filolog]Пидарасы[/filolog], сэр!"

DeiMos 14.04.2016 01:44

0-perpetum > Ты думаешь сейчас, что чем-то нас удивил?

Всем давно известно, что в 1С работают на аутсорсе таджики и молдаване полуграмотные...

И пишут индийский код...

DeiMos 14.04.2016 01:48

Более того, в УЦ3 постоянно рефреном проходит:
Вот так писать нельзя.
Так пишут только в фирме 1С.
Именно так написаны все типовые конфигурации от 1С.

Если я у вас увижу вот такой программный код на экзамене - сразу двойка без пересдачи.
Идите, устраивайтесь на работу в 1С.
Никуда более вас не примут.

Buhta 14.04.2016 22:32

(0)да редко кто з/п в бухии считает... но все-равно спасибо:)

DeiMos 14.04.2016 23:25

0-perpetum > Вот прямо с языка сняла..

Я сейчас нацелился спикировать на эту ветку с вопросом, какого буя вы ЗП считаете в бухгалтерии!!!???

Пришлось ложно отбомбиться всем своим говном мимо (на больницу и хлебозавод большой в Сирии).

pivovarovivan 14.04.2016 23:53

Да и в ЗиК код иногда вызывает странные чувства. Вот смотрю я на нынешний

Процедура ИзмФлагКрым()
ПостоянноПроживалВКрыму18Марта2014Года = ФлПроживалКрым;
КонецПроцедуры

и так вот смотрю - и вроде по форме всё правильно, и не придраться- ведь работает же. А по сути... Если прог не знает как сделать реквизит "ПостоянноПроживалВКрыму18Марта2014Года" справочника "Сотрудники" флажком на форме, то это как-то серьёзно озадачивает. Может индусы программируют?

VZ 15.04.2016 00:28

Код, код... Да редька с ним.
Намедни ко мне одна бушка порыдала: Книга Покупок не формируется. С Продажами - все ОК, с Покупками - жопа. С 2016 года, что характерно. Ну, релиз обновил, но терзали смутные сомнения: в ридми никаких указаний, что что-то менялось...
Копнул. Выяснил: все дело в реквизите ДатаНомерСчетаФактуры. Использовался он как комментатор, по сути, и приучил бушек к небрежности. А с 2016 года он стал реквизитом [u]двух[/u] элементов выгрузки: НомерСчетаФактуры и ДатаСчетаФактуры.
Мне и раньше нервировало, что для заполнения этого поля (составного!) разработчики никакого шаблона не смастрячили, отдали на фантазию бушкам. Они и рады изгалятся...
В общем, правила такие:
Сначала номер. Только номер, и ничего кроме номера. Потом точка с запятой(<;>. Потом дата. Не с запятыми в качестве разделителя ДД.ММ.ГГГГ, а точкой. как бы не было противно.
И ВСЕ. Никаких пояснений. Никаких сммволов "чтоб запомнить". Ничего. В смысле, именно ничего. и "г." не надо.
Все "пояснения" и "для памяти" - в комментарий.

Достаточно было в похвальбушке нового релиза упомянуть.
"Сволочи, однозначно" (с).

pivovarovivan 15.04.2016 00:29

А вот из 615 Бухии замечательный образец:
Функция глСобратьДанныеДляСЗВ2015(...)

...строка 27491
Если [b]ВидЗастрахованногоЛица=Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы[/b] Тогда
ДолгосрочныйДоговор=Сотрудник.ДолгосрочныйДоговорСИностранцем.Получить(ДатаМесяца);
Если ДолгосрочныйДоговор=0 Тогда
...
ИначеЕсли [b]ВидЗастрахованногоЛица=Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые[/b] Тогда
...
КонецЕсли;
КонецЕсли;

Ну ладно длительность трудового договора уже не влияет на стаж временно пребывающего - это одна ошибка, но вот условие
Если а=1 Тогда
Если а=2 Тогда
КонецЕсли;
КонецЕсли;
это, конечно, мощно.

DeiMos 15.04.2016 00:42

Там 4 молдаванина, 8 таджиков и 1 белорус (Руководитель проектов).

pivovarovivan 15.04.2016 00:52

7-VZ > Это ты ещё не видел, что с реквизитом ДатаОплаты в счетах-фактурах и записях сделали. Вот как его надо заполнять:

Разделитель между номером и датой ";"
Допустимые форматы даты:
ДД.ММ.ГГГГ(ГГ), ДД/ММ/ГГГГ(ГГ), ДД\ММ\ГГГГ(ГГ)
Например:
один документ оплаты: 1;01.01.2015
два документа оплаты: 1;01.01.2015;2;01.02.2015

А ещё в старых книгах покупок и продаж 1137 (которая до 735 была ) с недавнего релиза по ошибке выкинули заполнение граф по ставке 20%. Так что если есть умники типа моих, восстановивших НДС по купленным в 2003 по ставке 20% и списанным в 2013 году товарам, то их ждёт сюрприз - сумма перекочует в 18%.

pivovarovivan 15.04.2016 00:53

9-DeiMos > Ну тогда есть надежда!

VZ 15.04.2016 01:33

10-Харлампий Дымба > Не-не-не. Никаких "допустимых": точка, и все. Тоже мне, творчество Захотелось. Обойдутся.
Единообразие полезней безобразия.

pivovarovivan 15.04.2016 02:22

7-VZ > Проблема как раз была не в порядке заполнения реквизита ДатаНомерСчетаФактуры - ведь он в документах прихода скрыт и заполняется автоматически при записи документа. Как раз из реквизитов НомерСчетаФактуры и ДатаСчетаФактуры. И как раз в виде НомерСчетаФактуры+";"+ДатаСчетаФактуры.
Проблема в том, что при наличии [b]отдельных[/b] реквизитов НомерСчетаФактуры и ДатаСчетаФактуры они книгу покупок заполняют разбирая на части [b]составной[/b] реквизит ДатаНомерСчетаФактуры. Который, действительно, мог до обновления (а это был где-то 585 релиз) заполняться как угодно.
И тут вдруг раз - после обновления реквизит ДатаНомерСчетаФактуры исчезает для редактирования, в документах введённых до обновления не виден, данные хранит в чёрти каком виде. Ведь в книге покупок 1137 графа была "Дата и номер счета-фактуры продавца", а в 735 стала "Номер и дата счета-фактуры продавца".
Тут изначально был просчёт с одним реквизитом для ДатаНомерСчетаФактуры, который вроде решили исправить, но, блин, как обычно - на 95%
Вот и с ДатаОплаты - такая же байда. Один реквизит, который изначально заполняется как попало, а потом раз - извольте по определенному формату, да ещё задним числом. А кто ошибся, пусть пеняет на себя.
И, вы не поверите, в документе ЗаписьКнигиПокупок ДатОплаты заполняется так:

Функция Заполнить(ДокОсн)
..
[b]ИначеЕсли[/b] ((ДокОсн.Вид() = [b]"Выписка"[/b]) или (ДокОсн.Вид() = "РасходныйОрдер")) Тогда
ДатаОплаты = Формат(ДокОсн.ДатаДок, "Д");
. [b]Если[/b] (ДокОсн.Вид() = "[b]СчетФактураПолученный[/b]") или (ДокОсн.Вид() = "СчетФактура") . Тогда
. ДатаОплаты = ДокОсн.ДатаОплаты;
. КонецЕсли;
...
КонецЕсли;

По старой схеме:
Если а=1 Тогда
Если а=2 Тогда
КонецЕсли;
КонецЕсли;

perpetum 19.04.2016 20:26

4-Buhta >В компаниях, с количеством сотров до сотни, - не нужны навороты и извращения ЗиКа, а на счетах бухгалтерии всё видится, как на ладони...

Удивляет другое - разработчики 1С считают зазорным проверить собственный код тестированием. В этом конкретном случае проблема существенная - вылет по ошибке обращения к простой переменной, как к таблице значений, что является уже издевательством над конечным потребителем программного продукта.

perpetum 19.04.2016 20:31

14-perpetum >Исправление: "таблице значений" читать, как "списку значений"

Чучундер 19.04.2016 21:40

ДатаНомерСчетаФактуры - это строковый реквизит в старых релизах бух77. с какого-то релиза появились два реквизита - отдельно для даты, отдельно для номера. И, по-моему, нормально книга (печатная!) формировалась после того как и два реквизита появились. По крайней мере у меня закачка в бухбазу из торг.базы шла - я вообщем всегда заполнял актуальные реквизиты - а старые - один оператор написать не проблем - тоже заполнял

USSR 19.04.2016 22:22

Там еше при непустом ДатаНомер проводки по ЗПК делаются ) Стояла в нем именно ";"

MagAN 20.04.2016 00:31

Весь 2015 приходилось править заполнение Таблицы 2 для Комплексной - эти казлы "перепутали" номера ячеек (остались от предыдущего бланка).
В новом бланке 2016 - новые приколы от уродов.
Таблица 6 (расчет базы ФСС_НС) не заполняется.
Номер таблицы поменялся (стал 12), но этим все до буя
Стр. 2119 fss_get.ert (16q1006)

Если НомерЛистаОтчета = 11 Тогда

Если исправить, то дальше эта тварь новую подлянку кидает:
Стр. 2310

СписокДанных4ФССРаздела2Таблица6.ДобавитьЗначение(Формат(ШаблонФСС_НС.ПроцентОтРасчетнойБазы,"Ч15.2"),"П000060001006");

затирая ячейку П000060001006 (СуммаВыплатыЗаМесяц3) ствкой ФСС_НС
Должна быть ячейка П000060005003

Стр. 2310 fss_get.ert (16q1006)
СписокДанных4ФССРаздела2Таблица6.ДобавитьЗначение(Формат(ШаблонФСС_НС.ПроцентОтРасчетнойБазы,"Ч15.2"),"П000060005003");

MagAN 20.04.2016 00:33

+(18) Там еще куча всякого мусора, но это хотя бы что-то заполнит ...

pivovarovivan 20.04.2016 01:35

14-Чучундер > Там проблема в том, что до ПП 735 (01.10.2014) в книге покупок была графа "Дата и номер счет фактуры продавца", а потом стало "Номер и дата счет фактуры продавца". Соответственно они этот скрытый реквизит ДатаНомерСчетаФактуры начали для документов с 01.10.2014 в другом порядке заполнять - сначала номер, потом дата. НО! При обновлении в выписанных до обновления документах с датой после 01.10.2014 реквизит ДатаНомерСчетаФактуры не перезаполняют по новым правилам, а оставляют как есть. Соответственно в книге покупок неправильно будет показан номер и дата, а в 8 разделе Декларации дата будет пустой - из-за преобразования типов, а в номере будет сидеть дата.
У тех кто своевременно обновился - проблем особых нет. Если обновляться раз в год - печалька. Мы только что с тобой на Мисте отметились в теме такой вот невезучей.
А всего-то 1С надо было сделать любое:
* при обновлении перезаполнить реквизит ДатаНомерСчетаФактуры по новым правилам - для всех документов с датой после 01.10.2014;
* забыть про этот ДатаНомерСчетаФактуры и использовать ДатаСчетаФактуры и НомерСчетаФактуры;
* использовать в книге покупок для разбора даты и номер вместо глРазложить() свою же замечательно работающую и с любовью написанную РазделитьНомерИДату().


Текущее время: 07:42. Часовой пояс GMT +3.