Бояршинов Алексей | Собственник, директор | Корада

«Как продать проект в 3 раза дороже, и нанести клиенту пользу, выполнив не "внедрение 1С", а "проект организационных изменений"»

Реальный кейс о том, как клиент пришел, получил предложение на проект автоматизации и ушел думать. А потом купил проект в 3 раза дороже. 1. Почему так много ИТ-проектов "не взлетает". Настоящие причины сопротивления сотрудников организации, и организации в целом проекту автоматизации. 2. Проект автоматизации управления и учета почти всегда есть проект организационных изменений. Об орг.изменениях, причинах их провала или успеха, факторах в компании заказчике, на которые необходимо обратить внимание. Когда изменения на самом деле не нужны, а когда они не возможны. 3. Чтобы что-то изменять, нужно понимать, как оно работает. Обследование бизнеса, а не учета, как его продать клиенту, в чем его ценность и как ее объяснить. 4. Как провести бизнес-обследование: азы консалтинга - основные подходы, этапы обследования, на что обратить внимание, кого интервьюировать и как, как обработать информацию, как оформить итоги, чтобы клиент понял о чем речь. 5. Как найти и нанять человека, который сможет обследовать бизнес, если вы этим заниматься не хотите/не можете. 6. Что делать после обследования - как перейти от схем процессов к автоматизации. Где заканчивается управленческий консалтинг и начинается 1С? Как осуществить изменения и поддерживать их. 7. Что у нас не получилось. Разбор отрицательных примеров, клиентов с которыми "не полетело" и выводы.

ВПФ М15 КА 2

1. user666770_anastasiyatretyakova 3 16.04.18 15:52 Сейчас в теме +0.1 $m
Добрый день. Помогите, пожалуйста.
Срочно нужна ВПФ для КА 2 М15.
Нашла описание, как сделать из встроенной формы сделать ВПФ.
Вроде бы сделала, как написано. Но выходит ошибка
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(235)}: Недостаточно фактических параметров
ВнешняяОбработкаОбъект.Печать(

Вот код ВПФ
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", " М15 "); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ИСТИНА);
	ПараметрыРегистрации.Вставить("Информация", " М15 ");//так будет выглядеть описание печ.формы для пользователя
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление"); 
ТаблицаКоманд.Колонки.Добавить("Идентификатор"); 
ТаблицаКоманд.Колонки.Добавить("Использование"); 
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение"); 
ТаблицаКоманд.Колонки.Добавить("Модификатор");
НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда. Представление = "М15 внешняя";
	НоваяКоманда. Идентификатор= "М15 внешняя";
	Сообщить(НоваяКоманда. Идентификатор);
	НоваяКоманда. Использование= "ВызовСерверногоМетода";
	НоваяКоманда. ПоказыватьОповещение= Истина;
	НоваяКоманда. Модификатор= "ПечатьMXL";

	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	Возврат ПараметрыРегистрации;
КонецФункции
&НаСервере

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М15 внешняя") Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"М15 внешняя",
			НСтр("ru='М15 внешняя'"),
			СформироватьПечатнуюФормуМ15(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
		
	КонецЕсли;
	
	ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, СтруктураТипов, КоллекцияПечатныхФорм);

КонецПроцедуры
&НаСервере

Функция СформироватьПечатнуюФормуМ15(СтруктураТипов, ОбъектыПечати, ПараметрыПечати) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_М15";
	
	НомерТипаДокумента = 0;
	
	Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
		МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
		
		ЭтаПечатнаяФормаДоступна = Ложь;
		КомандыПечати = УправлениеПечатью.СоздатьКоллекциюКомандПечати();
		МенеджерОбъекта.ДобавитьКомандыПечати(КомандыПечати);
		Для Каждого ДоступнаяПечатнаяФорма Из КомандыПечати Цикл
			Если ДоступнаяПечатнаяФорма.Идентификатор = "М15 внешняя" Тогда
				ЭтаПечатнаяФормаДоступна = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если Не ЭтаПечатнаяФормаДоступна Тогда
			Продолжить;
		КонецЕсли;
		
		НомерТипаДокумента = НомерТипаДокумента + 1;
		Если НомерТипаДокумента > 1 Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыМ15(ПараметрыПечати, СтруктураОбъектов.Значение);
		ЗаполнитьТабличныйДокументМ15(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати);
	КонецЦикла;
	Возврат ТабличныйДокумент;
	
КонецФункции

Процедура ЗаполнитьРеквизитыШапкиМ15(ДанныеПечати, Макет, ТабличныйДокумент)
	
	// Выводим общие реквизиты шапки
	СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата, ,ДанныеПечати.БанковскийСчетОрганизации);
	
	ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
	ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
	ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
	
	СтруктураПараметров = Новый Структура;
	СтруктураПараметров.Вставить("ПредставлениеОрганизации", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации));
	СтруктураПараметров.Вставить("ОрганизацияПоОКПО", СведенияОбОрганизации.КодПоОКПО);
	СтруктураПараметров.Вставить("НомерДокумента", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеПечати.Номер));
	
	ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата), "ПолноеНаименование,");
	СтруктураПараметров.Вставить("КонтрагентНаименование", ПредставлениеКонтрагента);
	
	ОбластьМакета.Параметры.Заполнить(СтруктураПараметров);
	ТабличныйДокумент.Вывести(ОбластьМакета);
	
КонецПроцедуры

Процедура ЗаполнитьРеквизитыПодвалаМ15(ОбластьПодвала, ДанныеПечати, ИтоговыеСуммы)
	
	ОбластьПодвала.Параметры.Заполнить(ДанныеПечати);
	
	СтруктураПараметров = Новый Структура;
	
	// Главный бухгалтер
	СтруктураПараметров.Вставить("ФИОГлавБухгалтера", ДанныеПечати.ГлавныйБухгалтер);
	
	СтруктураПараметров.Вставить("ФИОРуководителя", ДанныеПечати.Руководитель);
	СтруктураПараметров.Вставить("ДолжностьРуководителя", ДанныеПечати.ДолжностьРуководителя);
	
	СтруктураПараметров.Вставить("ФИОКладовщика", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Кладовщик, ДанныеПечати.Дата));
	СтруктураПараметров.Вставить("ДолжностьКладовщика", ДанныеПечати.ДолжностьКладовщика);
	
	СтруктураПараметров.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ИтоговыеСуммы.КоличествоПорядковыхНомеровЗаписейПрописью);
	СтруктураПараметров.Вставить("СуммаПрописью", ИтоговыеСуммы.СуммаПрописью);
	Если ЗначениеЗаполнено(ИтоговыеСуммы.ИтогоСуммаНДС) Тогда
		СтруктураПараметров.Вставить("ИтогНДС", ФормированиеПечатныхФорм.СуммаРубКоп(ИтоговыеСуммы.ИтогоСуммаНДС, Неопределено, Неопределено));
	Иначе
		СтруктураПараметров.Вставить("ИтогНДС", "______ руб. ______ коп.");
	КонецЕсли;
	
	ОбластьПодвала.Параметры.Заполнить(СтруктураПараметров);
	
КонецПроцедуры

Процедура ЗаполнитьТабличныйДокументМ15(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати)
	
	ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
	
	Макет = ПолучитьМакет("ПФ_MXL_М15");
	
	ДанныеПечати        = ДанныеДляПечати.РезультатПоШапке.Выбрать();
	ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	ПервыйДокумент = Истина;
	Пока ДанныеПечати.Следующий() Цикл
		
		СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
		ВыборкаПоДокументам.Сбросить();
		Если НЕ ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска) Тогда
			Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.РеализацияУслугПрочихАктивов") Тогда
				Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Для документа %1 печать М-15 не требуется'"),
					ДанныеПечати.Ссылка);
			Иначе
				Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'В документе %1 отсутствуют товары. Печать накладной не требуется'"),
					ДанныеПечати.Ссылка);
			КонецЕсли;
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				Текст,
				ДанныеПечати.Ссылка);
			Продолжить;
		КонецЕсли;
		
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		// Выводим общие реквизиты шапки
		ЗаполнитьРеквизитыШапкиМ15(ДанныеПечати, Макет, ТабличныйДокумент);
		
		// Выводим заголовок таблицы
		ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
		ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
		
		НомерСтраницы   = 1;
		
		// Инициализация итогов в документе
		ИтоговыеСуммы = СтруктураИтоговыеСуммы();
		
		// Создаем массив для проверки вывода
		МассивВыводимыхОбластей = Новый Массив;
		
		// Выводим многострочную часть документа
		ОбластьМакета  = Макет.ПолучитьОбласть("Строка");
		ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
		
		НомерСтроки = 0;
		ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ВалютаРегламентированногоУчета);
		ЗаполнитьРеквизитыПодвалаМ15(ОбластьПодвала, ДанныеПечати, ИтоговыеСуммы);
		
		Если ДанныеДляПечати.РезультатПоШапке.Колонки.Найти("ВыводитьКодНоменклатуры") <> Неопределено Тогда
			ВыводитьКодНоменклатуры = ДанныеПечати.ВыводитьКодНоменклатуры;
		Иначе
			ВыводитьКодНоменклатуры = Истина;
		КонецЕсли;
		
		СтрокаТовары = ВыборкаПоДокументам.Выбрать();
		КоличествоСтрок = СтрокаТовары.Количество();
		Пока СтрокаТовары.Следующий() Цикл
			
			НомерСтроки = НомерСтроки + 1;
			ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, НомерСтроки, ВыводитьКодНоменклатуры);
			
			МассивВыводимыхОбластей.Очистить();
			МассивВыводимыхОбластей.Добавить(ОбластьМакета);
			
			Если НомерСтроки = КоличествоСтрок Тогда
				МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
			КонецЕсли;
			
			Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
				НомерСтраницы = НомерСтраницы + 1;
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				СтруктураПараметров = Новый Структура;
				СтруктураПараметров.Вставить("НомерСтраницы", "Страница " + НомерСтраницы);
				ЗаголовокТаблицы.Параметры.Заполнить(СтруктураПараметров);
				ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
			КонецЕсли;
			
			ТабличныйДокумент.Вывести(ОбластьМакета);
			РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары);
			
		КонецЦикла;
		
		// Выводим итоги по документу
		ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ВалютаРегламентированногоУчета);
		ЗаполнитьРеквизитыПодвалаМ15(ОбластьПодвала, ДанныеПечати, ИтоговыеСуммы);
		ТабличныйДокумент.Вывести(ОбластьПодвала);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
		
	КонецЦикла;
	
КонецПроцедуры

Функция СтруктураИтоговыеСуммы()
	
	Структура = Новый Структура;
	
	СтруктураРесурсовДляИтогов = СтруктураРесурсовДляИтогов();
	
	Для Каждого Элемент Из СтруктураРесурсовДляИтогов Цикл
		Структура.Вставить("Итого"+Элемент.Ключ+"НаСтранице", 0);
		Структура.Вставить("Итого"+Элемент.Ключ, 0);
	КонецЦикла;
	
	Возврат Структура;
	
КонецФункции

Процедура ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, ВсегоНомеров, ВалютаРегламентированногоУчета)
	
	ИтоговыеСуммы.Вставить("КоличествоПорядковыхНомеровЗаписейПрописью", ЧислоПрописью(ВсегоНомеров, ,",,,,,,,,0"));
	ИтоговыеСуммы.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(ИтоговыеСуммы.ИтогоСуммаСНДС, ВалютаРегламентированногоУчета));
	
КонецПроцедуры

Процедура ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьМакета, НомерСтроки, ВыводитьКодНоменклатуры = Истина, ВыводитьКодТНВД = Неопределено, СчетФактураНаАванс = Ложь)
	
	ИспользоватьНаборы = ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТовары, "ЭтоНабор");
	
	ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы);
	
	Если ИспользоватьНаборы
		И СтрокаТовары.ЭтоКомплектующие
		И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие
		И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям
		   ИЛИ СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам) Тогда
		// Область должна остаться незаполненной
		ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные());
	ИначеЕсли ИспользоватьНаборы
		И СтрокаТовары.ЭтоНабор
		И СтрокаТовары.ВариантПредставленияНабораВПечатныхФормах = Перечисления.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие
		И (СтрокаТовары.ВариантРасчетаЦеныНабора = Перечисления.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих
			ИЛИ СчетФактураНаАванс) Тогда
		// Область должна остаться незаполненной
		ОбластьМакета.Параметры.Заполнить(НаборыСервер.ПустыеДанные());
	Иначе
		ОбластьМакета.Параметры.Заполнить(СтрокаТовары);
	КонецЕсли;
	
	СтруктураПараметров = Новый Структура("КоличествоМест, КоличествоВОдномМесте, НоменклатураКод,КодТНВЭД", 0, 0, "", "--");
	ЗаполнитьЗначенияСвойств(СтруктураПараметров, СтрокаТовары);
	ОкруглитьДоЦелого(СтруктураПараметров.КоличествоМест);
	СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки);
	
	ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
	ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = СтрокаТовары.ЭтоВозвратнаяТара;	
	Если ВыводитьКодТНВД <> Неопределено Тогда
		ДополнительныеПараметрыПолученияНаименованияДляПечати.КодТНВЭД = ?(НЕ ВыводитьКодТНВД.ВыводитьВКолонке И ВыводитьКодТНВД.ВыводитьВСтроке, СтрокаТовары.КодТНВЭД, "");
		Если НЕ ВыводитьКодТНВД.ВыводитьВКолонке Тогда
			СтруктураПараметров.КодТНВЭД = "--";
		КонецЕсли;
	КонецЕсли;
	
	ПредставлениеНоменклатуры =  ПрефиксИПостфикс.Префикс
		+ НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
			Строка(СтрокаТовары.НоменклатураНаименование),
			СтрокаТовары.ХарактеристикаНаименование,
			,
			,
			ДополнительныеПараметрыПолученияНаименованияДляПечати)
		+ ПрефиксИПостфикс.Постфикс;
	
	СтруктураПараметров.Вставить("ПредставлениеНоменклатуры", ПредставлениеНоменклатуры);
		
	Если Не ВыводитьКодНоменклатуры Тогда
		СтруктураПараметров.НоменклатураКод = "";
	КонецЕсли;
	ОбластьМакета.Параметры.Заполнить(СтруктураПараметров);
	
КонецПроцедуры

Процедура РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары)
	
	СтруктураСуммПоСтроке = СтруктураРесурсовДляИтогов();
	
	ЗаполнитьЗначенияСвойств(СтруктураСуммПоСтроке, СтрокаТовары);
	ОкруглитьДоЦелого(СтруктураСуммПоСтроке.КоличествоМест);
	Для Каждого Элемент Из СтруктураСуммПоСтроке Цикл
		Если ЗначениеЗаполнено(Элемент.Значение) Тогда
			ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] = ИтоговыеСуммы["Итого"+Элемент.Ключ+"НаСтранице"] + Элемент.Значение;
			ИтоговыеСуммы["Итого"+Элемент.Ключ] = ИтоговыеСуммы["Итого"+Элемент.Ключ] + Элемент.Значение;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

Функция СтруктураРесурсовДляИтогов()
	
	Структура = Новый Структура;
	
	Структура.Вставить("СуммаБезНДС",       0);
	Структура.Вставить("СуммаНДС",          0);
	Структура.Вставить("СуммаСНДС",         0);
	Структура.Вставить("Количество",        0);
	Структура.Вставить("КоличествоМест",    0);
	Структура.Вставить("КоличествоПринято", 0);
	Структура.Вставить("МассаБрутто",       0);
	Структура.Вставить("МассаНетто",        0);
	Структура.Вставить("Сумма",             0);
	
	Структура.Вставить("РазницаБезНДСУвеличение", 0);
	Структура.Вставить("РазницаБезНДСУменьшение", 0);
	Структура.Вставить("РазницаНДСУвеличение",    0);
	Структура.Вставить("РазницаНДСУменьшение",    0);
	Структура.Вставить("РазницаСНДСУвеличение",   0);
	Структура.Вставить("РазницаСНДСУменьшение",   0);
	
	Возврат Структура;
	
КонецФункции

Процедура ОкруглитьДоЦелого(ОкругляемоеЧисло)
	Если ЗначениеЗаполнено(ОкругляемоеЧисло) Тогда
		Если ОкругляемоеЧисло <> Цел(ОкругляемоеЧисло) Тогда
			ОкругляемоеЧисло = Цел(ОкругляемоеЧисло) + 1;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
	ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
КонецПроцедуры
Показать
Прикрепленные файлы:
ВнешняяОбработка1.epf
Вознаграждение за ответ
Показать полностью
Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение

Вакансии

Программист 1С
Москва
Полный день

Программист 1С
Москва
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб. до 100 000 руб.
Полный день

Руководитель проектов по внедрению 1С документооборота
Санкт-Петербург
зарплата от 100 000 руб. до 130 000 руб.
Полный день

Руководитель по сопровождению и внедрению 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Полный день