![]() |
|
Модераторы: stron |
![]()
|
|
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
У меня есть две базы: за 07 и 08 года. Мне надо получить отчет по материалам который пролежал без движения. Т.е. создать отчет, который показывал материалы без движения по двум этим базам. Они разные.
Вопрос: можно ли в одной обработке создать 3 ТЗ, 1 для 07 года, 2-ая для 08 года, а в 3-ей сравнить первые две таблицы????? |
|||
|
||||
| SaschaL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 880 Регистрация: 13.12.2006 Где: Челябинская обл г .Нязепетровcк Репутация: 8 Всего: 9 |
Да такое возможно!
С точки зрения 1С каких либо технических проблем нет! и тем более сравнить Таблицы Значений между собой, самый простой способ это когда все нужные для этого таблицы значений будут приведены к одной структуре и все! |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 7 Всего: 34 |
Проще выбираешь данные из одной базы - хочешь клади их в ТЗ, хочешь проверяй динамически, подключаемся к другой базе по OLE и проверяем там если сходится - выводим куда надо.
|
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
Itsys скажи как по OLE я не разу с этим не работала??? Знаю только ТЗ.
По структуре все таблицы одинаковы.. |
|||
|
||||
| SaschaL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 880 Регистрация: 13.12.2006 Где: Челябинская обл г .Нязепетровcк Репутация: 8 Всего: 9 |
ТЗ это таблица значений. А через OLE ты должен подключиться к другой базе данных что бы получить аналогичную информацию из другой базы данных.
Команды для работы с OLE Automation описываются в главе 40 справочника по встроенному языку. вот пример, взятый с сайта www.mista.ru, там же еще есть другие примеры, которые показывают работу с OLE Automation:
|
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
У меня на данный момент вот такая бредовая идея (сроки поджимают наших снабженцев, аж меня вызвали из декретного).
Процедура Сформировать() Ит = СоздатьОбъект("БухгалтерскиеИтоги"); // Первая таблица Тз.новаяКолонка("Наименование"); Тз.новаяКолонка("Код"); Тз.новаяколонка("МестаХранения"); Тз.новаяКолонка("Субсчет10"); Тз.новаяколонка("Количество"); Тз.новаяколонка("Снд"); Тз.новаяколонка("Скд"); Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); ВыбСчет="10.01;10.02;10.03;10.04;10.05;10.06;10.08;10.09;10.10.01;10.10.02;10.14"; Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ВыбСчет,,, 1,,); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Ит.ВыбратьСубконто(ВидыСубконто.Материалы); Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл кол=ИТ.СКД(3); цена=кол*ИТ.СКД(); если Ит.Скд()=0 тогда продолжить иначе если Ит.Снд()=Ит.СКД() тогда Тз.НоваяСтрока(); Тз.Наименование=Ит.Субконто(ВидыСубконто.материалы).Наименование; Тз.Код=Ит.Субконто(ВидыСубконто.материалы).код; Тз.МестаХранения=Ит.Субконто(2); Тз.Субсчет10=Ит.Субконто(ВидыСубконто.материалы).Субсчет10; Тз.Количество=число(Кол); Тз.Снд=Ит.СНД(); Тз.Скд=Ит.СКД(); конецесли конецесли; КонецЦикла; значениевфайл("C:\остатки.txt", Тз); сообщить("Ура") КонецПроцедуры Процедура сохран() Ит = СоздатьОбъект("БухгалтерскиеИтоги"); // Вторая таблица Тз1.новаяКолонка("Наименование"); Тз1.новаяКолонка("Код"); Тз1.новаяколонка("МестаХранения"); Тз1.новаяКолонка("Субсчет10"); Тз1.новаяколонка("Количество"); Тз1.новаяколонка("Снд"); Тз1.новаяколонка("Скд"); Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,, 1); ВыбСчет="10.01;10.02;10.03;10.04;10.05;10.06;10.08;10.09;10.10.01;10.10.02;10.14"; Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ВыбСчет,,, 1,,); Ит.ВыбратьСубконто(ВидыСубконто.Материалы); Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл кол=ИТ.СКД(3); цена=кол*ИТ.СКД(); если Ит.Скд()=0 тогда продолжить иначе если Ит.Снд()=Ит.СКД() тогда Тз1.НоваяСтрока(); Тз1.Наименование=Ит.Субконто(ВидыСубконто.материалы).Наименование; Тз1.Код=Ит.Субконто(ВидыСубконто.материалы).код; Тз1.МестаХранения=Ит.Субконто(2); Тз1.Субсчет10=Ит.Субконто(ВидыСубконто.материалы).Субсчет10; Тз1.Количество=Кол; Тз1.Снд=Ит.СНД(); Тз1.Скд=Ит.СКД(); конецесли конецесли; КонецЦикла; КонецПроцедуры процедура Выгрузить() Перем Тз3; тз3=создатьобъект("ТаблицаЗначений"); Тз3.новаяКолонка("Наименование"); Тз3.новаяКолонка("Код"); Тз3.новаяколонка("МестаХранения"); Тз3.новаяКолонка("Субсчет10"); Тз3.новаяколонка("Количество"); Тз3.новаяколонка("Снд"); Тз3.новаяколонка("Скд"); ЗначениеИзФайла("C:\остатки.txt",Тз); тз3.новаястрока(); Тз3.Наименование=Тз.Наименование; Тз3.Код=Тз.Код ; Тз3.МестаХранения=Тз.МестаХранения; Тз3.Субсчет10=Тз.Субсчет10; Тз3.Количество=Тз.Количество; Тз3.Снд= Тз.Снд; Тз3.Скд=Тз.Скд; конецпроцедуры Процедура сравнить() перем тз1,тз3; Выгрузить(); сохран(); если тз3.код=тз1.код тогда сообщить("ура"); конецесли; конецпроцедуры знаю, что ерунда |
|||
|
||||
| SaschaL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 880 Регистрация: 13.12.2006 Где: Челябинская обл г .Нязепетровcк Репутация: 8 Всего: 9 |
ТАК это все замечательно, но для того чтобы сравнить однотипную информацию с двух одинаковых баз нужно её получить.
Допустим создали вы отчет или обработку не важно, создали на форме 3 таблицы значений с разными идентификаторами. Но обработку то вы сможете в одной базе, допустим вы написали алгоритм по получению информации из базы, и поместили эту инфу в ТЗ, но для анализа то вам понадобиться и вторую ТЗ заполнить информацией только уже из другой базы, вот как раз для этого вам и нужно использовать OLE а иначе просто ни чего не получится. Тот вариант что у вас описан с использование файла формата txt в принципе тоже приемлемый вариант если создать вначале обработку по получению информации в одной базе и выгрузить её в другой. Но главное в этом случае не запутаться. Судя по внезапному окончанию кода дальше у вас дело не пошло... В данной ситуации какого рода совет вам нужен? Добавлено через 2 минуты и 7 секунд Если у вас это сделано внешней обработкой можете скинуть на [email protected] я посмотрю может что и посоветую или помогу доработать если конфигурация конечно у вас стандартная. |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 7 Всего: 34 |
Здесь все не так просто, как кажется.
Вопрос зачем тебе такая огромная таблица значений, если при сверке ты используешь только ТЗ.Код - в этом случае проще запихнуть все в СписокЗначений, дальше ты это список сохраняешь ЗначениеВФайл(), в другой конфигурации ты его загружешь из ЗначениеИзФайла, и при проходе итогов проверяешь вхождение нужного кода в список Принадлежит(). Добавлено через 1 минуту и 50 секунд Конфигурация нестандартная в стандартной конфе нет таких счетов учета материалов ЗЫ Если время ждет, то могу сегодня-завра вечером накидать 2 обработки для первой и второй базы, но сейчас времени нет. |
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
SaschaL :
OLE не использовала. Обработку послала. Да, но и предприятие у нас не стандартное..... электростанция. Добавлено через 1 минуту и 8 секунд время ждет, за один день все равно ниче не сделаю..... |
|||
|
||||
| SaschaL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 880 Регистрация: 13.12.2006 Где: Челябинская обл г .Нязепетровcк Репутация: 8 Всего: 9 |
Обработку получил, завтра с утра на свежую голову взгляну.
И предложу свой вариант |
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
OK
|
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
как сделать заполнение (инициализация) Тз отдельной функцией
|
|||
|
||||
| SaschaL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 880 Регистрация: 13.12.2006 Где: Челябинская обл г .Нязепетровcк Репутация: 8 Всего: 9 |
Вы наверное это имели ввиду:
Вот такой примерно принцип заполнения. Теперь встречный вопрос в обработке которые вы прислали нужно создать третью ТЗ? Я так понимаю что в ней должны попасть только те элементы которых не оказалось в одной из таблиц. |
|||
|
||||
| roalang |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.3.2008 Репутация: нет Всего: нет |
SaschaL,
наооборот как я с коллегой поддумав пришла к выводу если значения в Тз1 и Тз2 равны, то переносить в 3 Тз |
|||
|
||||
| Itsys |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 7 Всего: 34 |
Ну вот, как обещал, собственно ничего сложного
Код для обработки из первой базы:
Теперь для второй, в которой и будет формироваться ТЗ со всеми не используемыми материалами:
И одно замечание: учитесь писать код красиво и понятно. ЗЫ "Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям." (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
![]()
|
| Правила форума "1C: Предприятие, SAP, ERP и учётные системы" | |
|
|
Запрещается! 1. Обсуждение крэков, кейгенов и других подобных программ Пробуйте искать сами или обращайтесь в приват к участникам форума. Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения. Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...) 2. Давать ссылки на взломанные продукты
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |