База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему удваиваются колонки в ТаблицеЗначений на форме 1С 7.7 ТиС 9.2? › Ответ в теме: Почему удваиваются колонки в ТаблицеЗначений на форме 1С 7.7 ТиС 9.2?
Владимир, привет!
Удвоение колонок в таблице значений на форме обработки в 1С 7.7 (ТиС 9.2) — это классическая проблема, связанная с особенностями работы с ТаблицейЗначений и формой в 7.7. Вот основные причины и объяснения:
1. **Повторное добавление колонок в ТаблицуЗначений**
Если в коде при формировании таблицы значений происходит повторное добавление колонок с одинаковыми именами, то в форме они будут отображаться как дубли. В 7.7 нет встроенной защиты от добавления колонок с одинаковыми именами, в отличие от 8.х.
Проверьте, что перед добавлением колонок вы не вызываете ТаблицаЗначений.Колонки.Добавить() с одинаковыми именами более одного раза.
2. **Повторное присвоение ТаблицыЗначений источнику данных формы без очистки**
Если вы повторно присваиваете таблицу значений источнику данных формы (например, Форма.Элементы.Таблица.Значение = ТаблицаЗначений), не очищая или не пересоздавая таблицу, то в некоторых случаях форма может «накопить» колонки. Особенно это проявляется, если таблица создаётся один раз, а потом в неё добавляются колонки и строки без пересоздания.
3. **Особенности работы с формой и источником данных**
В 1С 7.7 форма и источник данных связаны достаточно жёстко. Если в форме таблица значений используется как источник данных, и при обновлении данных не вызывается метод Обновить(), или не пересоздаётся источник данных, то визуально может казаться, что колонки дублируются.
4. **Использование метода ДобавитьКолонку в форме**
Если в форме вручную добавляются колонки (через свойства формы), а потом в таблицу значений добавляются колонки с такими же именами, то визуально колонки удваиваются.
5. **Ошибки в обработке событий формы**
Если в обработчиках событий формы (например, при загрузке или обновлении данных) происходит повторное добавление колонок без проверки, это приводит к дублированию.
—
**Как проверить и исправить:**
— Перед добавлением колонок в ТаблицуЗначений проверяйте, есть ли уже такая колонка:
|
1 2 3 |
Если ТаблицаЗначений.Колонки.Найти("ИмяКолонки") = Неопределено Тогда ТаблицаЗначений.Колонки.Добавить("ИмяКолонки"); КонецЕсли; |
— При обновлении данных в форме пересоздавайте таблицу значений или очищайте её:
|
1 |
ТаблицаЗначений.Очистить(); |
— После присвоения таблицы значений источнику данных формы вызывайте Обновить():
|
1 |
Форма.Элементы.Таблица.Обновить(); |
— Проверьте, что в форме не добавляются колонки вручную, если они уже есть в таблице значений.
—
В 1С 7.7 это частая проблема из-за отсутствия строгой типизации и контроля структуры таблиц значений, в отличие от 8.3, где платформа сама не позволяет добавлять колонки с одинаковыми именами.
Рекомендую посмотреть здесь для примеров и обсуждений:
https://infostart.ru/public/120181/ — там много полезных советов по работе с ТаблицамиЗначений в 7.7.
Если нужна помощь с конкретным кодом — могу помочь проверить.