1c v 7.7. Установка владельца для справочника, имеющего записи.

05.05.10

Задачи пользователя - Адаптация типовых решений

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

 

 

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

 Если делать это штатными средствами, 1с при сохранении конфигурации выдает сообщение, что справочник такой-то имеет записи и не может быть подчинен.

 Я не буду вас томить описанием долгих поисков истины, хотя, может быть, это самое интересное в работе программиста.

 Итак, готовый рецепт.

 Подчиненный справочник отличается от обычного наличием поля PARENTEXT, в котором хранится ссылка на владельца. Поскольку 1с сама не в состоянии создать это поле, мы должны ему помочь.

 Предположим, что нашему справочнику соответствует таблица SC1234. Находим эту таблицу и добавляем поле PARENTEXT, установив тип char(9). Попутное замечание: все поля в одиэсовских таблицах имеют дополнительный параметр NOT NULL. Поскольку мы не можем в момент добавления поля проставить всех владельцев, то мы должны сбросить этот параметр, чтобы поле могло добавиться в таблицу. Скорее всего из-за этого 1с самостоятельно не может установить подчинение.

 Если теперь зайти в режим предприятия, то 1с выдаст сообщение, что нарушена структура таблицы SC1234. Так и должно быть. Словарь данных о новом поле еще ничего не знает. Зайдем в конфигуратор, установим подчинение и сохраним конфигурацию. Вуаля! На этот раз подчинение проходит без каких либо сложностей.

PS. Должен сделать важное дополнение. Надеюсь, еще никто не воспользовался мои методом. Спасибо товарищу Ёпрст за сомнения и справедливые замечания по поводу отсутствия всякого упоминания о его методе решения данной проблемы. Вот он:

1.Делаешь выгрузку данных.
2.Удаляешь элементы справочника, который будешь переподчинять или можно просто удалить соответствующую таблицу DBF или SQL.
3.Переподчиняешь справочник.
4.Старый МД-ник в выгрузке заменяешь новым.
5.Делаешь загрузку данных.
6.Назначаешь владельцев.

Этот метод абсолютно надежен, т.к. при загрузке данных текущие таблицы уничтожаются и создаются новые. Поэтому, если позволяет размер базы, пользуемся этим способом. 

При реализации моего метода в рабочей базе я столкнулся с тем, что мой справочник, который я хотел подчинить, очистился. Не могу точно сказать, почему в тестовой базе метод сработал: там я одновременно пытался редактировать файл метаданных и словарь данных сторонними программами. Все это предстоит еще раз исследовать.

Но данный казус хоть и неприятен, не настолько страшен, чтобы испортить жизнь. Мы, все-таки программисты, а не домохозяйки. :) Берем бэкап, разворачиваем и делаем импорт таблицы (в нашем случае sc1234) из бэкапа в рабочую базу. Все.

Приношу свои извинения за публикацию непроверенного метода.

См. также

Печатные формы Адаптация типовых решений Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Приятное улучшение обработки "Внешние печатные формы" для типовых конфигураций на базе 1С 7.7 для более комфортной работы с "любимой семерочкой".

1 стартмани

04.02.2022    3412    1    igor7777    0    

3

Адаптация типовых решений Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

В этой статье описано, какие небольшие изменения можно внести в модуль документа Начисление налогов с ФОТ, чтобы правильно рассчитывались страховые взносы с 1 апреля 2020 г.

09.04.2020    20873    Юджин58    39    

5

Адаптация типовых решений Программист Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Управленческий учет Бесплатно (free)

Описан способ работы с учетом расписания с приоритетными покупателями - торговыми сетями (основными покупателями) в торговой или комплексной учетной системе на 1С 7.7. Множественная заявка покупателя на несколько торговых точек.

14.10.2019    6398    ksnik    14    

3

Операции по ВЭД Адаптация типовых решений Программист Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет НДС Бесплатно (free)

В данной статье хотел поделиться опытом, как в Торговле 7.7 ( релиз 994) сделать возможность выводить код ТНВЭД в печатную форму счета-фактуры. Сразу скажу, что нужно это только тем, кто осуществляет экспорт в страны таможенного союза. Остальные могут не волноваться.

15.11.2017    12099    AndKovalchuk    0    

1

Зарплата Адаптация типовых решений Программист Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Реализация Постановления Правительства РФ 1316 от 04.12.14 для типовой конфигурации "Бухгалтерский учет 7.7" рел. 7.70.590

1 стартмани

31.12.2014    24095    9    Sergey1CSpb    2    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gucci76 366 28.04.10 11:37 Сейчас в теме
Цитата:"в конфигурацию я должен был добавить новый справочник, и, самое странное, должен был поставить ему в подчинение уже существующий справочник"
Так конфигурация становится нетиповой.
Я бы сделал без подчинения, а с отбором по реквизиту. В новом справочник, сделал реквизит с типом значения "ОлдСправочник" и отбор по этому реквизиту. При поиске подчиненных элементов модуль увеличился бы на несколько строк, но конфа осталось бы типовой.
ИМХО
2. Майкопчанин 80 28.04.10 11:43 Сейчас в теме
(1) Во-первых конфигурация у меня совсем не типовая, а во-вторых, нужно было непременно установить подчинение.
5. Майкопчанин 80 28.04.10 12:56 Сейчас в теме
(3) Читал, попадался мне этот метод. Не устроил. База у меня оченно большая. На загрузку данных ушел бы целый день.
(4) Ну и новое поле никто не заставляет вставлять в конец. Можно и нужно вставлять после DESCR
6. Ёпрст 1065 28.04.10 13:07 Сейчас в теме
(5) ну дык, неплохо указать на это в сабже.
:)
11. Майкопчанин 80 05.05.10 09:37 Сейчас в теме
(6)(7) В связи с вновь открывшимися подробностями, сделал дополнение к публикации. Спасибо за замечания.
(9) Такая обработка не то чтобы проста, она примитивна. А ее реализация зависит от структуры базы. Так что нет смысла выкладывать программу, которая никому не пригодится.
7. Abadonna 3969 29.04.10 08:20 Сейчас в теме
(3)
Сто пудов метод автора быстрее в разы. Из-за одного справочника делать выгрузку-загрузку - :cry:
(0) А по (6) я бы тебе советовал добавить в описание. Эх, молодежь, не писали в советское время вы описания к изобретениям :D
отличающаяся тем, что...
4. Ёпрст 1065 28.04.10 12:48 Сейчас в теме
А так, способ - не очень.. важна еще последовательность полей в табличке - ибо индекс строится потом..
8. ACE$ 47 30.04.10 09:41 Сейчас в теме
(0) в свое время я не стал этим заморачиваться, и сделал по (1), хотя надобность такая была
9. Dolly_EV 269 05.05.10 04:06 Сейчас в теме
Еще бы к сабжу добавить обработочку, которая потом владельцев назначает..., а так зачОт ;)
10. SVR27 05.05.10 09:22 Сейчас в теме
А еще можно объединить способы автора и ёпрст: вместо выгрузки данных просто перенести файл справочника из базы во временную папку, внести изменения в конфигурацию, а потом открыть вновь созданную конфигуратором таблицу справочника и импортировать в него данные из перенесенного файла.
Оставьте свое сообщение