Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Конфигуратор, помогите с написанием кода на сортировку документов по определенным реквизит

Алекс Crazy
читатель
офлайн
Дата регистрации: 13.01.2010
Сообщений: 83
Пост №11
 
15.01.2010 21:00

> я картинку посмотрел, примерно понял о чем вопрос. может поэтому неверно?<br><br>блин раза три все перепроверял и не замечал<br>спс, все терь заработало, с меня пиво)))

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №12
 
17.01.2010 08:32

"Да я все равно не пью уж года 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 раза. Завтра разберусь, в общем, напишу если что"

Алекс Crazy
читатель
офлайн
Дата регистрации: 13.01.2010
Сообщений: 83
Пост №13
 
17.01.2010 15:17

"самое досадное, что в синтаксической ошибки то не выдает когда строка скопировано, в моём случае потому что такая процедура существует, а то что выбор значения не соответствует процедуре программа не обнаруживает<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>"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №14
 
17.01.2010 20:45

"> у меня в обоих случаях при открытие постое значение<br>Видимо, эта подзадача решается наличием строк:<br><br>Процедура ПриУстановкеБыстрогоОтбора()<br>...<br> Если ОтборПо = "по контрагенту" Тогда<br>       ...<br> ИначеЕсли ОтборПо = "по виду документов" Тогда<br>       ...<br> ИначеЕсли ОтборПо = "по кассе" Тогда //в конце вставляем это<br>       ПриВыбореКассы();<br>       ЗначениеВВидеСтроки=Строка(КассаДляОтбора);<br> КонецЕсли;<br>....<br><br>> но там при смене отбора(не закрывая Общего журнала) слетает значения выбора на 0<br>ну так надо смотреть что там система делает при смене отбора. И находится это все как раз в привеженной выше ПриУстановкеБыстрогоОтбора()<br><br>смотрите внимательно процедуру эту."

Алекс Crazy
читатель
офлайн
Дата регистрации: 13.01.2010
Сообщений: 83
Пост №15
 
17.01.2010 22:25

"Ты не совсем правильно меня понял, чего чего а синтаксис Если я помню еще с бэйсика<br>и вопрос был в чем разница этих двух процедур<br><br><br>по поводу ошибки она была в<br>> КассаДляОтбора =ВосстановитьЗначение("КассаДляОтбораЖурнала"); <br><br><br>впрос по синтаксису <br><br>> ВидДокументаДляОтбора= ?(ПустоеЗначение(ВидДокументаДляОтбора)=1, 1, ВидДокументаДляОтбора);<br>то что перечисляется через запетую как я понял это перечисления возможных вариантов значения<br>что значит просто "1"? во всех остальных там стоит <br>> ПолучитьПустоеЗначение("Справочник.Кассы")"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №16
 
18.01.2010 07:55

А, ясно...<br>В VB тоже есть такая функция: http://msdn.microsoft.com/ru-ru/library/27ydhh0d.aspx<br><br>Ну и в описание языка 1С смотрите:<br>?(,,)<br>Синтаксис:<br>?(,,)<br>Назначение:<br>Возвращает значение первого выражения, если условие истинно, иначе - значение второго выражения.<br>результат вычисления условного выражения.<br>Параметры:<br> - логическое выражение,<br> - выражение,<br> - выражение.<br><br>А про "1" - это номер, соответствующий элементу списка СписокВидовДокументов, по которому нужно выполнить отбор в журнале, если ВидДокументаДляОтбора пуст. То есть, придумано для вот чего. Ситуация:<br>1. Пользователь никогда ранее не пользовался этим механизмом отбора, поэтому ранее сохраненного значения вида документов для отбора для него нет.<br>2. Пользователь тычет в "установить отбор по виду документов". По какому виду по умолчанию нужно тут же включить отбор, если ранее этого не делалось? Ну по первому в списке просто и все. Этим и занимается алгоритм

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №17
 
18.01.2010 11:35

Спасибо за эти примеры. Меня тут попросили прийти и обновить комплексную - буду на месте править ошибки :)

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №18
 
18.01.2010 12:12

У меня их больше, но я пока не могу обобщить и все выложить. В связи с последними веяниями в законодательстве работы много

Алекс Crazy
читатель
офлайн
Дата регистрации: 13.01.2010
Сообщений: 83
Пост №19
 
18.01.2010 23:05

"> Ну и в описание языка 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>"

Алекс Crazy
читатель
офлайн
Дата регистрации: 13.01.2010
Сообщений: 83
Пост №20
 
19.01.2010 00:26

Как в отладчике сделать чтобы на каждой строчке выбранного модуля была точка остановки? это вручную все расставлять долго<br>

Показывать по 10 20 40 сообщений

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация