> я картинку посмотрел, примерно понял о чем вопрос. может поэтому неверно?<br><br>блин раза три все перепроверял и не замечал<br>спс, все терь заработало, с меня пиво)))
> я картинку посмотрел, примерно понял о чем вопрос. может поэтому неверно?<br><br>блин раза три все перепроверял и не замечал<br>спс, все терь заработало, с меня пиво)))
"Да я все равно не пью уж года 4 <br>А ошибка типовая. Я тоже так ошибаюсь, скопировал, вставил, подправил и... что то забыл. И 1С так ошибается тоже. Вот смотрите, пара примеров. Заодно поможем тем, у кого эти грабли высокочат, ну и для 1С на заметку, судя по всему они тут все таки бывают.<br><br>Комплексная 7.70.493 (последняя на текущий момент).<br>Отчет.ПодготовкаСведенийДляИМНС, примерное место - строка 2120<br>Имеем два одинаковых блока алгоритма, очевидно второй был просто скопирован с первого и подправлен:<br>//имущественные вычеты на которые сотрудник имел право<br>ОписаниеВычета311=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+ПоследнийМесяц-1,3).ПолучитьЗначение(5);<br>Если ТипЗначенияСтр(ОписаниеВычета311)="СписокЗначений" Тогда<br> ВсегоСуммаВычета311 = ОписаниеВычета311.ПолучитьЗначение(3);<br> НомерУведомления = ОписаниеВычета311.ПолучитьЗначение(4);<br> ДатаУведомления = Формат(ОписаниеВычета311.ПолучитьЗначение(5), "ДДДММГГГГ");<br> КодФНСУведомления = ОписаниеВычета311.ПолучитьЗначение(6);<br>КонецЕсли;<br><br>ОписаниеВычета312=ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы+ПоследнийМесяц-1,3).ПолучитьЗначение(6);<br>Если ТипЗначенияСтр(ОписаниеВычета312)="СписокЗначений" Тогда<br> ВсегоСуммаВычета312 = ОписаниеВычета312.ПолучитьЗначение(3);<br> НомерУведомления = ?(ПустоеЗначение(НомерУведомления)=1,ОписаниеВычета312.ПолучитьЗначение(4),НомерУведомления);<br> ДатаУведомления = ?(ПустоеЗначение(ДатаУведомления)=1,Формат(ОписаниеВычета311.ПолучитьЗначение(5), "ДДДММГГГГ"),ДатаУведомления);<br> КодФНСУведомления = ?(ПустоеЗначение(КодФНСУведомления)=1,ОписаниеВычета312.ПолучитьЗначение(6),КодФНСУведомления);<br>КонецЕсли;<br><br>Ошибка во втором блоке в строке ДатаУведомления= ..., при внимательном рассмотрении в самом деле видно, что это ошибка. Там должно быть написано "ОписаниеВычета312", а не "ОписаниеВычета311".<br><br>Ну и второй пример.<br>Та же конфигурация.<br>Обработка.РасчетЕСН. Таблица "13н_Раздел2". Колонка 36, строка 195. Ну, или относительно состава печатной формы, это строка "0600" в разделе 00002 и колонка "ТФОМС".<br>Имеем там в ячейке формулу:<br>Формат(ИтоговаяТаблица.ПолучитьЗначение(4,"Строка06ТФОМС")-ИтоговаяТаблица.ПолучитьЗначение(1,"Строка06ТФОМС"),"Ч-15."+Точность)<br>А она неправильная! Должна быть такая:<br>Формат(ИтоговаяТаблица.ПолучитьЗначение(4,"Строка06ТФОМС"),"Ч-15."+Точность)<br><br>Почему? А посмотрите соседние ячейки с этой и уловите логику. Очевидно, формула была тоже просто скопирована вместе с областью таблицы с другого места (с "0610" строки). Соседние подправили, а эту нет.<br><br>Беда в том что, когда пробуешь сказать об ошибках в hotline, они просят пример, на котором видно, где ошибка проявляется. Поэтому я давно уже не пишу туда, много времени нужно для этого.<br><br>Ну и еще одна "беда" вдогонку. Если у нас в комплексной ведется учет более чем одного собственного юрлица, то в справочнике юрлиц имеем несколько элементов. Теперь смотрим в глобальный модуль:<br>Функция глВеличинаПроцентаСтавкиЕСН(ЮрЛицо, Код, ДатаАктуальности)<br> СпрСтавкиЕСН = СоздатьОбъект("Справочник.СтавкиЕСН");<br> СпрСтавкиЕСН.ИспользоватьВладельца(ЮрЛицо);<br> Если СпрСтавкиЕСН.НайтиПоКоду(Код,0) = 1 Тогда<br> Возврат СпрСтавкиЕСН.Процент.Получить(ДатаАктуальности) <br> КонецЕсли;<br> Возврат 0 <br>КонецФункции<br><br>Ошибка в "СпрСтавкиЕСН.НайтиПоКоду(Код,0)". Почему 0 то? Зачем вообще тогда было писать ИспользоватьВладельца(...), если поиск идет "по всему справочнику"? Что имеем в результате ошибки? А вот что. При аргументе ФлагПоиска=0 будет найден первый подходящий элемент справочника такой, который соответствует режиму упорядочивания элементов. То есть, практически, результат данного поиска зависит от того, в каком порядке отсортированы по наименованию элементы в справочнике. И мы получим вовсе не информацию о том есть у нас у юрлица ЕСН или нет, а просто какое то значение, с нужным нам юрлицом никак и не связанное. В итоге больничные листы могут при проведении в журнал документов записать либо кучу ненужных записей про особые режимы, либо не сделать этого в том случае когда это надо.<br>И вообще, по изменениям в этом релизе относительно больничных проблема, мне уже "телефон оборвали", завтра пойду разбираться что там за чудеса. Пример: в ЖР текущий период "январь 2010". Делаем БЛ за 20-25 декабря 2009 г., имеем удвоенное количество строк в таблице о среднем заработке и удвоенный результат по расчету больничного листа. Бегло глянул, вроде бы насчет таблицы среднего - не факт что это ошибка, но результат не может быть выше в 2 раза. Завтра разберусь, в общем, напишу если что"
"самое досадное, что в синтаксической ошибки то не выдает когда строка скопировано, в моём случае потому что такая процедура существует, а то что выбор значения не соответствует процедуре программа не обнаруживает<br>стати была еще одна ошибка незначительная сюда там вставил же не весь модуль, синтаксис Если ...Иначе...тогда ... конец если. первое стоит в но чале а последние спустя пару страниц ниже ))<br><br><br>>Процедура ПриОткрытииИЛИПереоткрытииЖурнала(Режим)<br>вариант1<br>>ИначеЕсли ОтборПо = "по кассе" Тогда <br>>КассаДляОтбора = ТекДок.Касса; // общий реквизит документов <br><br>Вариант2<br>>ИначеЕсли ОтборПо = "по кассе" Тогда <br>>Если глЕстьРеквизитШапки("Касса", ТекДок.Вид()) = 1 Тогда<br>>КассаДляОтбора = ТекДок.Касса; // общий реквизит документов <br>>Иначе <br>>ВидОтбора.ТекущаяСтрока(1); // снимаем быстрый отбор <br>>КонецЕсли; <br><br><br><br><br>не совсем понял разницу,<br>Проблема №1<br>у меня в обоих случаях при открытие постое значение(при выборе отбора "по кассе")<br>>Процедура ПриЗакрытии()<br>>Если ПустоеЗначение(ДокументОснованиеЖурнала) = 1 Тогда<br>>СохранитьЗначение("КассаДляОтбораЖурнала",КассаДляОтбора);<br>>КонецЕсли<br><br>проблема №2<br>перебросил это в рабочею базу<br>тоже Т+С 9.2, но там при смене отбора(не закрывая Общего журнала) слетает значения выбора на 0<br>это опять я что то не доглядел?)))) <br><br>"
"> у меня в обоих случаях при открытие постое значение<br>Видимо, эта подзадача решается наличием строк:<br><br>Процедура ПриУстановкеБыстрогоОтбора()<br>...<br> Если ОтборПо = "по контрагенту" Тогда<br> ...<br> ИначеЕсли ОтборПо = "по виду документов" Тогда<br> ...<br> ИначеЕсли ОтборПо = "по кассе" Тогда //в конце вставляем это<br> ПриВыбореКассы();<br> ЗначениеВВидеСтроки=Строка(КассаДляОтбора);<br> КонецЕсли;<br>....<br><br>> но там при смене отбора(не закрывая Общего журнала) слетает значения выбора на 0<br>ну так надо смотреть что там система делает при смене отбора. И находится это все как раз в привеженной выше ПриУстановкеБыстрогоОтбора()<br><br>смотрите внимательно процедуру эту."
"Ты не совсем правильно меня понял, чего чего а синтаксис Если я помню еще с бэйсика<br>и вопрос был в чем разница этих двух процедур<br><br><br>по поводу ошибки она была в<br>> КассаДляОтбора =ВосстановитьЗначение("КассаДляОтбораЖурнала"); <br><br><br>впрос по синтаксису <br><br>> ВидДокументаДляОтбора= ?(ПустоеЗначение(ВидДокументаДляОтбора)=1, 1, ВидДокументаДляОтбора);<br>то что перечисляется через запетую как я понял это перечисления возможных вариантов значения<br>что значит просто "1"? во всех остальных там стоит <br>> ПолучитьПустоеЗначение("Справочник.Кассы")"
А, ясно...<br>В VB тоже есть такая функция:
Спасибо за эти примеры. Меня тут попросили прийти и обновить комплексную - буду на месте править ошибки
У меня их больше, но я пока не могу обобщить и все выложить. В связи с последними веяниями в законодательстве работы много
"> Ну и в описание языка 1С смотрите:<br>> ?(,,)<br>> Синтаксис:<br>> ?(,,)<br>> Назначение:<br>> Возвращает значение первого выражения, если условие истинно, иначе - значение второго выражения.<br>> результат вычисления условного выражения.<br>> Параметры:<br>> - логическое выражение,<br>> - выражение,<br>> - выражение.<br>> <br>> А про "1" - это номер, соответствующий элементу списка СписокВидовДокументов, по которому нужно выполнить отбор в журнале, если ВидДокументаДляОтбора пуст. То есть, придумано для вот чего. Ситуация:<br>> 1. Пользователь никогда ранее не пользовался этим механизмом отбора, поэтому ранее сохраненного значения вида документов для отбора для него нет.<br>> 2. Пользователь тычет в "установить отбор по виду документов". По какому виду по умолчанию нужно тут же включить отбор, если ранее этого не делалось? Ну по первому в списке просто и все. Этим и занимается алгоритм<br><br>ну рассмотрем другой пример синтаксиса<br><br>> СписокВидовДокументов.ВыбратьЗначение(ВыбЗначение,"Выбор вида документов",,60,0);<br><br>выбрать значение, а именно "выбор вида документа", " " (хз что за пробел, свобода выбора наверно), "60" занчение вот только чего?, "0" невыбранно нечего<br>извиняюсь за каламбур я ток учусь))), щас пытаюсь понять как сделать так что бы <br>> Процедура ПоКнопкеЗначение() <br>выбор перемещался не в первую строку а в ранние выбранную<br>помойму это <br>> Если ПустоеЗначение(ВидДокументаДляОтбора)>0 Тогда<br>> ВыбЗначение = """";<br>если значение отлично от 0, то выбрать значение """", как я понял которое ранние установлено?<br><br><br>"
Как в отладчике сделать чтобы на каждой строчке выбранного модуля была точка остановки? это вручную все расставлять долго<br>
10 декабря 2024 года — Практическая конференция «День Документооборота» 18 декабря 2024 года — Единый онлайн-семинар 1С для бухгалтеров и руководителей |
1C:Лекторий: 26 ноября 2024 года, начало в 10:00 — Бесплатная онлайн-лекция об учете НДФЛ и заполнении расчета 6-НДФЛ в программе 1С:ЗУП 8 ред.3 1C:Лекторий: 28 ноября 2024 года, начало в 10:00 — Бесплатная онлайн-лекция о разрешительном режиме при продаже маркированного товара, новом порядке работы |