1С
про нашего любимого желто-красно-синего друга
В карточке контрагента 1С Бухгалтерия 2.0 есть 3 адресных поля, которые настраиваются не совсем прозрачно. Чтобы отобразить нужную информацию, в справочнике виды контактной информации, стрелочками вверх/вниз нужно настроить последовательность полей. Первые 3 будут отображаться в Форме Элемента контрагента на вкладке "Адреса и телефоны".
Бухгалтерская отчетность малых предприятий печать pdf417 не активна
Автор KuzevichБухгалтеру понадобилась печатная форма Бухгалтерской отчетность малых предприятий с двумерным штрихкодом pdf417.
На сайте 1с висит информация о том что формирование отчетности с двоичным кодом будет только для годовой, ликвидационной отчетности и отчетности при реорганизации.
Но ей надо за квартал (не спрашивайте зачем) :)
Решение простое:
В конфигураторе - находим отчет "РегламентированныйОтчетБухОтчетностьМП", и модуле формы "ВыборПечатнойФормы", в процедуре "ПриОткрытии()" напишите перед строчкой ДоступныеПункты = Новый Массив;
строчку:
НастройкиВФорме.ДоступенПункт1=Истина;
в итоге функция должна выглядеть так:
Процедура ПриОткрытии() // Настройки по умолчанию. НастройкиВФорме = Новый Структура; НастройкиВФорме.Вставить("АктивныйПункт", 1); НастройкиВФорме.Вставить("ДоступенПункт1", Истина); НастройкиВФорме.Вставить("ДоступенПункт2", Истина); НастройкиВФорме.Вставить("ДоступенПункт3", Истина); НастройкиВФорме.Вставить("ВключатьКодыСтрок", Истина); Если ТипЗнч(ПараметрыПечати) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(НастройкиВФорме, ПараметрыПечати); КонецЕсли; ////////////////////////////////////////////////////// НастройкиВФорме.ДоступенПункт1=Истина; ////////////////////////////////////////////////////// ДоступныеПункты = Новый Массив; Если НастройкиВФорме.ДоступенПункт1 Тогда ДоступныеПункты.Добавить(1); КонецЕсли; Если НастройкиВФорме.ДоступенПункт2 Тогда ДоступныеПункты.Добавить(2); КонецЕсли; Если НастройкиВФорме.ДоступенПункт3 Тогда ДоступныеПункты.Добавить(3); КонецЕсли; ИндексДоступногоПункта = ДоступныеПункты.Найти(НастройкиВФорме.АктивныйПункт); Если ИндексДоступногоПункта = Неопределено Тогда ИндексДоступногоПункта = 0; КонецЕсли; Переключатель1 = ДоступныеПункты[ИндексДоступногоПункта]; ЭлементыФормы.Переключатель1.Доступность = НастройкиВФорме.ДоступенПункт1; ЭлементыФормы.Переключатель2.Доступность = НастройкиВФорме.ДоступенПункт2; ЭлементыФормы.Переключатель3.Доступность = НастройкиВФорме.ДоступенПункт3; ВыводитьКолонкуСКодамиСтрок = НастройкиВФорме.ВключатьКодыСтрок; УстановитьДоступностьВключенияКодов(); КонецПроцедуры
Просто памятка :)
Чтобы проверить как себя чувствует сервер защиты 1С Альфа-Авто нужно в браузере набрать:
для 4й версии: [имя сервера]:11998/state
для 5й версии: [имя сервера]:15201
Столкнулся с необходимостью выгрузить документы из базы 1С Комлексная Автоматизация 8.2 в 1С Бухгалтерию 7.7
Через конвертацию данных оказалось не так просто это осуществить (хотя, надо сказать, это возможно, но быстрее было написать код выгрузки через OLE)
В интернете я нашел только описания работы через OLE, но там не рассматривались все нюансы, поэтому пришлось помучаться.
Мне нужно было выгружать только документы прихода и расхода, но при желании, воспользовавшись данным шаблоном обработки можно дописать выгрузку любых документов.
Для начала подключаемся к базе:
База7 = Новый COMОбъект("V77.Application"); МонопольныйРежимOLE = ""; ЗапускБезЗаставки = 1; Попытка РезультатПодключения = База7.Initialize ( База7.RMTrade , "/d" + ПутьКБазе + " /n" + Пользователь+ " /p" + Пароль + МонопольныйРежимOLE, ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW","")); Сообщить("Подключено!"); Исключение Предупреждение(ОписаниеОшибки()); РезультатПодключения=Ложь; Возврат; КонецПопытки;
Ищем и если не находим, то создаем группу для выгруженной номенклатуры
СпрНомТам=База7.CreateObject("Справочник.Номенклатура"); КодГруппыВЫГРУЖЕНО=СпрНомТам.НайтиПоНаименованию("ВЫГРУЖЕНО",0); Если КодГруппыВЫГРУЖЕНО=0 тогда Сообщить("Не нашел группу ВЫГРУЖЕНО - создаю"); СпрНомТам.НоваяГруппа(); СпрНомТам.Наименование="ВЫГРУЖЕНО"; СпрНомТам.Записать(); КодГруппыВЫГРУЖЕНО=СпрНомТам.НайтиПоНаименованию("ВЫГРУЖЕНО",0); Сообщить(СпрНомТам.Код); иначе Сообщить("Нашел группу ВЫГРУЖЕНО - использую"); Сообщить(СпрНомТам.Код); КонецЕсли;
Получаем список документов из нашей базы 1С8:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ПоступлениеТоваровУслуг.Номер |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ПоступлениеТоваровУслуг.Проведен = ИСТИНА"; Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать();
Проходим по выборке и создаем каждый документ в базе 1С 7.7.
//Создаем ссылку на справочник номенклатуры для поиска товаров СпрНомОле=База7.CreateObject("Справочник.Номенклатура"); //Создаем OLE ссылку на документы ДокОле=База7.CreateObject("Документ.ПоступлениеТоваров"); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОлеНомер=Лев(ВыборкаДетальныеЗаписи.Номер,3)+Прав(ВыборкаДетальныеЗаписи.Номер,5); ОлеДата=ВыборкаДетальныеЗаписи.Ссылка.Дата; ДокНайден=ДокОле.НайтиПоНомеру(ОлеНомер,ОлеДата); Если ДокНайден=0 тогда //Тогда создаем в базе ДокОле.Новый(); ДокОле.НомерДок=ОлеНомер; ДокОле.ДатаДок=ВыборкаДетальныеЗаписи.Ссылка.Дата; СпрОле=База7.CreateObject("Справочник.МестаХранения"); // создаем объект справочника базы OLE СпрОле.НайтиПоКоду("00001",0); //Основной склад ДокОле.МестоХранения=СпрОле.ТекущийЭлемент(); // Вот теперь все в порядке //ЗаполнимНоменклатуру Для каждого СтрокаТовара из ВыборкаДетальныеЗаписи.Ссылка.Товары цикл КодВ7="ВГР"+Прав(СтрокаТовара.Номенклатура.Код,8); НашлиНоменклатуру=СпрНомОле.НайтиПоКоду(КодВ7,0); Если НашлиНоменклатуру=0 тогда Сообщить("Не нашел номенклатуру "+СтрокаТовара.Номенклатура.наименование+" - создаю"); СпрНомОле.Новый(); СпрНомОле.Наименование=СтрокаТовара.Номенклатура.наименование; СпрНомОле.Код=КодВ7; СпрНомОле.ТипНоменклатуры=База7.EvalExpr("Перечисление.ТипыНоменклатуры.Товар"); СпрНомОле.Родитель=СпрНомТам.ТекущийЭлемент(); СпрНомОле.Записать(); КонецЕсли; ДокОле.НоваяСтрока(); ДокОле.Товар=СпрНомОле.ТекущийЭлемент(); ДокОле.Количество=СтрокаТовара.Количество; ДокОле.Цена=СтрокаТовара.Цена; ДокОле.Сумма=СтрокаТовара.Сумма; ДокОле.НДС=СтрокаТовара.СуммаНДС; ДокОле.Всего=СтрокаТовара.Сумма; КонецЦикла; ДокОле.Записать(); // запишем документ в базе OLE Если ДокОле.Провести()=0 Тогда Сообщить("Не смогли провести документ! "+ОлеНомер); КонецЕсли; КонецЕсли КонецЦикла;
В итоге обработка ищет и если не находит то создает в справочнике номенклатура группу "ВЫГРУЖЕНО" и в нее запишет всю необходимую номенклатуру с кодами из Базы 1С 8 и префиксом "ВГР".
На всякий случай прикладываю рабочую обработку. Можете скачать и доработать под свои нужды.