У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8
Что-то получилось! Но возник вопрос, который и должен был возникнуть: в форме выбираю элемент (элемент справочника). Мне нужно выбрать данные по этому элементу. Для этого надо его внутренний идентификатор. Как его получить? С данным вопросом разобрался (может ещё кому-то пригодится):
Процедура Сформировать() // Пусть "Объект" - это реквизит формы типа "Справочник" Сообщить("Объект: "+Объект.ТекущийЭлемент()); Сообщить("Вариант 1: "+ПолучитьИД_Вариант1(Объект.ТекущийЭлемент())); Сообщить("Вариант 2: "+ПолучитьИД_Вариант2(Объект.ТекущийЭлемент())); КонецПроцедуры //_____________________________________________________________________________
Если нужно получить id в том виде, в котором он хранится в таблицах 1С, воспользуйтесь недокументированной функцией _IdToStr(), н-р: Сообщить("Вариант 1: "+_IdToStr(ПолучитьИД_Вариант1(Объект.ТекущийЭлемент())));
На сайте [необходимо зарегистрироваться для просмотра ссылки] поищи обработку которая показывает соответствие таблиц 1С и SQL/ Знаю на 8.х точно есть, но думаю 7.7 не исключение....
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности. Оскар Уайлд
//==== первая часть мардлезонского балета.... Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Товары = Справочник.Товары.ТекущийЭлемент; |Код = Справочник.Товары.Код; |Наименование = Справочник.Товары.Наименование; |Группировка Код без групп; |";
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
Сообщить("1 часть марлезонского балета..."); Сообщить(ТекущееВремя());
шк = СоздатьОбъект("Справочник.ШтрихКод"); Пока Запрос.Группировка(1) = 1 Цикл Если Запрос.Товары.Актуален = Перечисление.Булево.Да Тогда тТов = Запрос.Товары; Если тТов.Мест <> 0 Тогда Если спМест.НайтиЗначение(тТов.Мест) = 0 Тогда спМест.ДобавитьЗначение(тТов.Мест); КонецЕсли; тзСкидка.НоваяСтрока(); тзСкидка.Товар = тТов; тзСкидка.Мест = тТов.Мест; тзСкидка.ЦенаСк = тТов.ПродажнаяЦена1.Получить(РабочаяДата()); КонецЕсли; тЦена = Запрос.Товары.ПродажнаяЦена3.Получить(РабочаяДата()); шк.ИспользоватьВладельца(тТов); Если шк.ВыбратьЭлементы() = 1 Тогда Пока шк.ПолучитьЭлемент() = 1 Цикл Если шк.ПометкаУдаления() = 0 Тогда тШК = Число(шк.ШтрихКод); Если (тШК <> 0) И (тЦена <> 0) Тогда
//ItemList //Сообщить(Строка(Запрос.Товары.Код) + " _ " + Строка(Число(шк.ШтрихКод)) + " _ " + Строка(Запрос.Товары.Наименование) + " _ " + Строка(Число(тЦена))); стрСоед = "SELECT Code,Name,Cen,Tax FROM ItemList WHERE Code="+тШК; Rs.Open(стрСоед,Соединение); Если RS.EOF=-1 Тогда RS.AddNew(); RS.Fields("Code").Value = Число(шк.ШтрихКод); КонецЕсли; RS.Fields("Name").Value = Лев(СокрЛП(Запрос.Товары.Наименование),16); RS.Fields("Cen").Value = Число(Запрос.Товары.ПродажнаяЦена3.Получить(РабочаяДата())); RS.Fields("Tax").Value = Число(?(Запрос.Товары.СтавкаНДС = Перечисление.СтавкаНДС.Двадцать,1,0)); RS.Update(); rs.Close(); // CodeAliases str2 = "SELECT Code,Alias,Mult FROM CodeAliases WHERE Alias="+Число(Запрос.Товары.Код); RS.Open(str2,Соединение); Если RS.EOF=-1 Тогда RS.AddNew(); RS.Fields("Code").Value = Число(шк.ШтрихКод); RS.Fields("Alias").Value = Число(Запрос.Товары.Код); RS.Fields("Mult").Value = 1; RS.Update(); КонецЕсли; rs.Close();
КонецЕсли; КонецЕсли; КонецЦикла; Иначе //Сообщить(Строка(Запрос.Товары.Код) + " _ " + Строка(Запрос.Товары.Наименование) + " _ " + Строка(Число(тЦена))); стрСоед = "SELECT Code,Name,Cen,Tax FROM ItemList WHERE Code="+Число(Запрос.Товары.Код); Rs.Open(стрСоед,Соединение); Если RS.EOF=-1 Тогда RS.AddNew(); RS.Fields("Code").Value = Число(Запрос.Товары.Код); КонецЕсли; RS.Fields("Name").Value = Лев(СокрЛП(Запрос.Товары.Наименование),16); RS.Fields("Cen").Value = Число(Запрос.Товары.ПродажнаяЦена3.Получить(РабочаяДата())); RS.Fields("Tax").Value = Число(?(Запрос.Товары.СтавкаНДС = Перечисление.СтавкаНДС.Двадцать,1,0)); RS.Update(); rs.Close(); КонецЕсли; КонецЕсли; КонецЦикла; Сообщить("окончание 1 части марлезонского балета..."); Сообщить(ТекущееВремя()); // конец 1 части марлезонског балета КонецПроцедуры
Выгружаю через INSERT
Процедура ВыгрузкаТоваров()
ИмяСервера = "LSW11"; ИмяБазыДанных = "cashbase"; Попытка Соединение =СоздатьОбъект("ADODB.Connection"); Соединение.Provider = "SQLOLEDB"; Соединение.ConnectionString = "Server=" + ИмяСервера + ";Database=" + ИмяБазыДанных + ";Trusted_Connection=yes"; Соединение.ConnectionTimeout = 20; Соединение.Open(); Сообщить("Установлено соединение с базой данных " + ИмяБазыДанных + " на сервере " + ИмяСервера); //Возврат 1; Исключение Предупреждение("Нихуя не получилось. Вероятно спиздили компьютер с данными. " + ИмяБазыДанных + " на сервере " + ИмяСервера,10); //Возврат 0; КонецПопытки;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли;
шк = СоздатьОбъект("Справочник.ШтрихКод"); Пока Запрос.Группировка(1) = 1 Цикл Если Запрос.Товары.Актуален = Да Тогда тТов = Запрос.Товары; тЦена = Запрос.Товары.ПродажнаяЦена3.Получить(ТекущаяДата()); шк.ИспользоватьВладельца(тТов); Если шк.ВыбратьЭлементы() = 1 Тогда Пока шк.ПолучитьЭлемент() = 1 Цикл Если шк.ПометкаУдаления() = 0 Тогда тШК = Число(шк.ШтрихКод); Если (тШК <> 0) И (тЦена <> 0) Тогда //DepItems
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!