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

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

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

Неверный идентификатор колонки!

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №1
 
13.03.2012 18:01

"Объясните пожалуйста где у меня ошибка... и что означает строка УстановитьЗначение? почему выводит ошибку<br>тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br> <br> Т = СоздатьОбъект("Таблица");<br> тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");<br> тзПроцедуры.НоваяКолонка("Контрагент");<br> тзПроцедуры.НоваяКолонка("ФИО");<br> тзПроцедуры.НоваяКолонка("Цена", "Число");<br> СпрТарифы.ВыбратьЭлементы();<br> Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл<br>       Колонка = "к" + СокрЛП(СпрТарифы.Код);<br>       тзПроцедуры.НоваяКолонка(Колонка, "Число");<br> КонецЦикла;<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> Док = СоздатьОбъект("Документ.СтатКартаПациента");<br> Если ПустоеЗначение(Контрагент) = 1 Тогда<br>       Док.ВыбратьДокументы(НачДата, КонДата);<br>       Пока Док.ПолучитьДокумент() = 1 Цикл<br>            //Сообщить(Док.НомерДок);<br>            Док.ВыбратьСтроки();<br>            Пока Док.ПолучитьСтроку() = 1 Цикл<br>             Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br>                   Продолжить;<br>             КонецЕсли;<br>             тзПроцедуры.НоваяСтрока();<br>             тзПроцедуры.ФИО       = Док.Пациент;<br>             тзПроцедуры.Контрагент = Док.Авиакомпания;<br>             тзПроцедуры.Цена       = Док.Цена;<br>             КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br>             //Сообщить(КодПроцедуры);<br>             тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1); <br>            <br>            КонецЦикла;<br>       КонецЦикла;<br> Иначе<br>       Док.ВыбратьДокументы(НачДата, КонДата);<br>       Пока Док.ПолучитьДокумент() = 1 Цикл<br>            Если Док.Авиакомпания <> Контрагент Тогда<br>             Продолжить;<br>            КонецЕсли;<br>            Док.ВыбратьСтроки();<br>            Пока Док.ПолучитьСтроку() = 1 Цикл<br>             Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br>                   Продолжить;<br>             КонецЕсли;<br>             тзПроцедуры.НоваяСтрока();<br>             тзПроцедуры.ФИО       = Док.Пациент;<br>             тзПроцедуры.Контрагент = Док.Авиакомпания;<br>             тзПроцедуры.Цена       = Док.Цена;<br>             КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br>             //Сообщить(КодПроцедуры);<br>             тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1); - вот на эту строчку постоянно ругается<br>            <br>            КонецЦикла;<br>       КонецЦикла;<br> КонецЕсли;"

Д.И.А
читатель
офлайн
Дата регистрации: 11.03.2012
Сообщений: 64
Пост №2
 
13.03.2012 18:18

Покажите весь код,от начала до конца процедуры или функ или он и есть?

Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20950
Пост №3
 
13.03.2012 18:25

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

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №4
 
13.03.2012 21:09

"я исправила, но все равно выдает ошибку<br>тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br>{Отчет.ОтчетПоАвиакомпаниям12.Форма.Модуль(63)}: Неверный идентификатор колонки!"

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №5
 
13.03.2012 21:10

"Процедура Сформировать()<br><br> СпрПрейскурант = СоздатьОбъект("Справочник.Прейскуранты"); <br>       СпрТарифы = СоздатьОбъект("Справочник.Тарифы"); <br>       ДокСтатКарты = СоздатьОбъект("Документ.СтатКартаПациента");<br> СпрПрейскурант.НайтиПоКоду(1);<br> СпрПрейскурант.НайтиПоКоду(2); <br> СпрПрейскурант.НайтиПоКоду(3);<br> СпрПрейскурант.НайтиПоКоду(4);<br> СпрПрейскурант.НайтиПоКоду(5);;<br> СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент()); <br> <br><br> Т = СоздатьОбъект("Таблица");<br> тзПроцедуры = СоздатьОбъект("ТаблицаЗначений");<br> тзПроцедуры.НоваяКолонка("Контрагент");<br> тзПроцедуры.НоваяКолонка("ФИО");<br> тзПроцедуры.НоваяКолонка("Цена", "Число");<br> СпрТарифы.ВыбратьЭлементы();<br> Пока СпрТарифы.ПолучитьЭлемент() = 1 Цикл<br>       Колонка = "к" + СокрЛП(СпрТарифы.Код);<br>       тзПроцедуры.НоваяКолонка(Колонка, "Число");<br> КонецЦикла;<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> Док = СоздатьОбъект("Документ.СтатКартаПациента");<br> Если ПустоеЗначение(Контрагент) = 1 Тогда<br>       Док.ВыбратьДокументы(НачДата, КонДата);<br>       Пока Док.ПолучитьДокумент() = 1 Цикл<br>            //Сообщить(Док.НомерДок);<br>            Док.ВыбратьСтроки();<br>            Пока Док.ПолучитьСтроку() = 1 Цикл<br>             Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br>                   Продолжить;<br>             КонецЕсли;<br>             тзПроцедуры.НоваяСтрока();<br>             тзПроцедуры.ФИО       = Док.Пациент;<br>             тзПроцедуры.Контрагент = Док.Авиакомпания;<br>             тзПроцедуры.Цена       = Док.Цена;<br>             КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br>             //Сообщить(КодПроцедуры);<br>             тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br>            КонецЦикла;<br>       КонецЦикла;<br> Иначе<br>       Док.ВыбратьДокументы(НачДата, КонДата);<br>       Пока Док.ПолучитьДокумент() = 1 Цикл<br>            Если Док.Авиакомпания <> Контрагент Тогда<br>             Продолжить;<br>            КонецЕсли;<br>            Док.ВыбратьСтроки();<br>            Пока Док.ПолучитьСтроку() = 1 Цикл<br>             Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br>                   Продолжить;<br>             КонецЕсли;<br>             тзПроцедуры.НоваяСтрока();<br>             тзПроцедуры.ФИО       = Док.Пациент;<br>             тзПроцедуры.Контрагент = Док.Авиакомпания;<br>             тзПроцедуры.Цена       = Док.Цена;<br>             КодПроцедуры = СокрЛП(Док.КодПроцедуры.Код);<br>             //Сообщить(КодПроцедуры);<br>             тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки, "к" + СокрЛП(КодПроцедуры), 1);<br>            КонецЦикла;<br>       КонецЦикла;<br> КонецЕсли;<br><br> //Сообщить(тзПроцедуры.КоличествоКолонок());<br><br> // формируем список колонок для свертки *************************************************************<br> //тзПроцедуры.Выгрузить(ТТТ);<br> СписокКолонок = "Цена";<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() - 3 Цикл<br>       СписокКолонок = СписокКолонок + "," + СокрЛП(а);<br> КонецЦикла;<br> тзПроцедуры.Свернуть("ФИО,Контрагент", СписокКолонок);<br> тзПроцедуры.Сортировать("Контрагент,ФИО");<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> // удаляем лишние колонки без итогов<br> а=4;<br> Пока а <= тзПроцедуры.КоличествоКолонок() Цикл<br>       Если тзПроцедуры.Итог(а) = 0 Тогда<br>            тзПроцедуры.УдалитьКолонку(а);       //удаляем строку, но "а" не увеличиваем, т.к. следующая строка у нас и есть "а"<br>       Иначе<br>            а = а + 1;                         //увеличиваем а (для перехода на след. строку)<br>       КонецЕсли;<br> КонецЦикла;<br> //тзПроцедуры.Выгрузить(ТТТ);<br><br> // выводим на печать ********************************************************************************<br> // шапка<br> Т.ВывестиСекцию("Шапка|ФИО");<br> Т.ПрисоединитьСекцию("Шапка|Контрагент");<br> Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br>       КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);<br>       КодПроцедуры = Прав(КодПроцедуры, 6);<br>       СпрТарифы.НайтиПоКоду(КодПроцедуры);<br>       КодПроцедуры = СпрТарифы.ТекущийЭлемент().ПолноеНаименование;<br>       <br> <br> <br>       //Итог = тзПроцедуры.Итог(а);<br>       //Если Итог <> 0 Тогда<br>            Т.ПрисоединитьСекцию("Шапка|Процедуры");<br>       //КонецЕсли;<br><br> КонецЦикла;<br> Т.ПрисоединитьСекцию("Шапка|Цена");<br> Т.ПрисоединитьСекцию("Шапка|ИтогоПоПациенту");<br><br> // строки<br> тзПроцедуры.ВыбратьСтроки();<br> Пока тзПроцедуры.ПолучитьСтроку() = 1 Цикл<br>       Т.ВывестиСекцию("Строка|ФИО");<br>       Т.ПрисоединитьСекцию("Строка|Контрагент");<br><br>       ИтогоПоПациенту = 0;<br>       Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br>            Посещения = тзПроцедуры.ПолучитьЗначение(тзПроцедуры.НомерСтроки, а);<br>            Т.ПрисоединитьСекцию("Строка|Процедуры");<br>            ИтогоПоПациенту = ИтогоПоПациенту + Посещения;<br>       КонецЦикла;<br><br>       Т.ПрисоединитьСекцию("Строка|Цена");<br>       Т.ПрисоединитьСекцию("Строка|ИтогоПоПациенту");<br> КонецЦикла;<br> // подвал<br> Т.ВывестиСекцию("Подвал|ФИО");<br> Т.ПрисоединитьСекцию("Подвал|Контрагент");<br> //Т.ПрисоединитьСекцию("Шапка|Контрагент");<br>       Для а = 4 По тзПроцедуры.КоличествоКолонок() Цикл<br>       ИтогоПосещений = тзПроцедуры.Итог(а);<br>       КодПроцедуры = тзПроцедуры.ПолучитьПараметрыКолонки(а);<br>       КодПроцедуры = Прав(КодПроцедуры, 6);<br>       СпрТарифы.НайтиПоКоду(КодПроцедуры);<br>      Цена =СпрТарифы.Цена.получить(НачДата); <br>      сумма = Цена*ИтогоПосещений;<br> Т.ПрисоединитьСекцию("Подвал|Процедуры");<br>      ИтогоПосещений=0;<br>      Цена=0;<br>КонецЦикла; <br> Т.ПрисоединитьСекцию("Подвал|Цена");<br> Т.ПрисоединитьСекцию("Подвал|ИтогоПоПациенту");<br><br> Т.Опции(0);<br> Т.Показать();<br> Т.Напечатать(0); <br>КонецПроцедуры"

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №6
 
13.03.2012 21:52

Раскомментируйте //Сообщить(КодПроцедуры), который перед ошибкой и посмотрите чему равен КодПроцедуры.<br>Скорее всего этого кода нет в справочнике Тарифов, т.к. имена колонок берутся из этого справочника.

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №7
 
13.03.2012 21:56

"раскомментировала... ошибка та же<br>000001<br>000002<br>000005<br>000007<br>000002<br>0000­02<br>000078<br>тзПроцедуры.УстановитьЗначение(тзПроцедуры.НомерСтроки,"к" + СокрЛП(КодПроцедуры),1);<br>{Отчет.ОтчетПоАвиакомпаниям12.Форма.Модуль(62)}: Неверный идентификатор колонки!<br> <br>что означает 1?"

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №8
 
13.03.2012 22:40

"Это все потому что справочник СпрТарифы у вас является подчиненным справочнику Прейскуранты.<br>Как ваш алгоритм работает?<br>1. Берется справочник Прейскуранты<br>2. Зачем то в нем делается поиск по кодам 1, 2, 3, 4, 5 элементов. Первые четыре поиска выполняются, но результат поиска никак не используется.<br>3. По отношению к последнему найденному элементу (с кодом 5) из справочника Прейскуранты происходит добавление в таблицу тзПроцедуры кучи колонок с идентификаторами, соответствующими кодам элементов справочника Тарифы, подчиненных элементу справочника Прейскуранты с кодом 5 (это ключевое место, которое и есть причина ошибки).<br>4. Далее идет перебор каких то документов вида СтатКартаПациента и значения оттуда уходят в таблицу тзПроцедуры.<br>И вот теперь сами смотрите. В документе в реквизит "КодПроцедуры" занесена какая то ссылка на элемент из справочника Тарифов и она не пустая, но! Элемент, на который сделана ссылка не подчинен элементу справочника Прейскуранты с кодом 5 (наверное тариф принадлежит другому прейскуранту?), поэтому в таблице тзПроцедуры колонка с нужным идентификатором конечно же не находится.<br> <br>Если не вникать в суть алгоритма, то как решение:<br><br><pre>СпрТарифы.ВыбратьЭлементы(); </pre><br><br>заменить на<br><br><pre>СпрТарифы.ВыбратьЭлементы(0); </pre><br><br>но будет ли это корректным, можно судить только зная конечную цель задачи, зачем то же написано все таки<br><br><pre> СпрТарифы.ИспользоватьВладельца(СпрПрейскурант.ТекущийЭлемент()); </pre><br><br> <br>P.S.<br>Странная конструкция:<br> <br><pre>Если СокрЛП(Док.КодПроцедуры) = """" Тогда<br> Продолжить;<br>КонецЕсли; </pre><br><br> Я даже не думал что такое вообще работает. Для верности заменил бы на:<br> <br><pre>Если ПустоеЗначение(Док.КодПроцедуры) = 1 Тогда<br> Продолжить;<br>КонецЕсли; </pre>"

Nachinayush'aya
читатель
офлайн
Дата регистрации: 27.12.2011
Сообщений: 35
Пост №9
 
13.03.2012 22:53

спасибо огромное за уделенное время, за то что все разложили по полкам... очень признательна Вам! до этого у меня тоже возникали вопросы именно по этой конструкции... здесь я выложила скрины, для полного разъяснения моего вопроса, если интересно можете посмотреть, возможно я неправильно излагаю свои мысли https://buh.ru/forum/thread.jsp?id=634257

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №10
 
13.03.2012 22:58

завтра посмотрю, а то у меня уже это "завтра" почти наступило, время 23:58 на часах

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

Читают тему:

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